3

次のような Akka Persistence システムから始めたとします。

case class MyMessage(x: Int)

class MyProcessor extends Processor {
  def receive = {
    case Persistent(m @ MyMessage) => m.x
    //...
  }
}

そして、いつか私はこれを次のように変更します:

case class MyMessage(x: Int, y: Int)

class MyProcessor extends Processor {
  def receive = {
    case Persistent(m @ MyMessage) => m.x + m.y
    //...
  } 
}

新しいシステムをデプロイした後、 のインスタンスがMyProcessorその状態を復元しようとすると、ジャーナリングされたメッセージは以前のケース クラスになります。後者のタイプを想定しているため、 がスローされOnReplayFailure、プロセッサが役に立たなくなります。y質問: 欠席が等しい(または何でも)と仮定した場合、0これを克服するためのベスト プラクティスはありますか? たとえば、 を使用して、implicit回復時に前者のメッセージから後者に変換することはありますか?

4

1 に答える 1