2

Akka の永続的なメールボックスは、次のステートメントを文書化しています。

耐久性のあるメールボックスは、他のメールボックスと同様に、トランザクションに対応する可能性が低くなります。アクターがメッセージを受信した後、その処理が完了する前にクラッシュした場合、メッセージが失われる可能性があります。

アクター A が永続的なメールボックスをメッセージ キューとして使用し、キューに M1 と M2 の 2 つのメッセージがあるとします。アクターは M1 を受け取り、M1 を処理しています。M1 の処理が完了する前に A がクラッシュした場合、M1 は失われますか? 関連する質問として、「A がクラッシュする」とはどういう意味ですか? A がキャッチされない例外を受け取ったということですか、それとも A を実行している JVM がクラッシュしたということですか?

4

1 に答える 1

1

クラッシュの理由は何でもかまいません。この用語は、処理が終了しなかったことを意味します (例外によって中断されたか、停電などによって途中で終了したかのいずれかです)。アクターがメールボックスからメッセージをキューから取り出すとすぐに、メッセージはメールボックスから削除されます。その動作が望ましくない場合は、ピーク メールボックスのようなものを実装する必要があります。こちらのドキュメントを参照してください。

于 2013-02-01T09:09:53.417 に答える