次のような 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
回復時に前者のメッセージから後者に変換することはありますか?