Akka Persistenceは、受信したコマンドに基づいて作成されたイベントを再生します。イベントは検証後にコマンドメッセージから生成され、無効なアクター状態を作成できないようにすべきです。
これは、最初に受信したメッセージ(コマンド)を必要以上に再生しないことを意味しますが、クラッシュ後にアクターの状態を再構築するのに適用するのに安価なイベントを維持できます。さらに、snapshotsを使用して状態を直接回復することもできます。
編集: 私は俳優の唯一の状態が永続化されたことは事実であるとのクラッシュを存続コメントで述べたように。この状態は消費されたメッセージのみを反映し、まだアクターメールボックスに存在するメッセージは反映しません。
しかし、永続的なメールボックスに格納されるアクターにメッセージをプッシュするのではなく、メッセージのリストを自分の状態の一部として保管する永続アクターからメッセージを引き出すための代替方法があります。
UntypedPersistentActorWithAtLeastOnceDelivery akkaパーシステンスの一部として、送信者が永続メッセージを処理する別の可能性があります。
システムを再考する必要があるため、これらのメールボックスは耐久性のあるメールボックスには置き換えられません。これまでのところ、消費者からの仕事を引き出してくれました。当初、メッセージキュー製品(耐久性キューを備えたRabbitMQ)も考慮しましたが、私たちの初期作業項目はdbから来て以来、耐久性のあるメッセージなしでakkaクラッシュを処理できます。
永続性機能は耐久性メールボックスとは異なります。ノードがクラッシュし、メッセージが消費されない(永続化される)場合に失われるメモリ内のキューがまだあります。 – Jags