3

私は、キューからジョブを供給されているワーカー アクターのグループがある典型的な状況にいます。ワーカーの障害は、一時的で環境が原因である場合と、永続的で無効なジョブが原因である場合があります。

ワーカー アクター内で永続的な障害のケースを処理していますが、一時的なケースの再試行を実装するにはどうすればよいですか? スーパーバイザーを使用すると、アクターを再起動することができます。これは、動作状態にリセットして再試行することが望ましいですが、失敗したときにアクターが動作していたメッセージを再試行するにはどうすればよいでしょうか?

ありがとう!

4

2 に答える 2

1

Akka 1.2 または master を使用している場合は、preRestart をオーバーライドして、アクターがクラッシュしたときの最新のメッセージを取得できます。

于 2011-08-16T22:11:55.373 に答える
1

Command パターンを実装する必要があります。Command は、実行する操作とその引数をカプセル化するオブジェクトであり、Actor とは独立して存在します。アクターが再試行可能な方法で失敗した場合、スーパーバイザーはコマンドをアクターに再送信します。アクターがストリームを受け取ってメッセージを処理する場合、アクターはコマンドのリストを入力し、完了を記録して、適切な場所で再開できるようにする必要があります。ストリームが巻き戻し可能でない場合は、開始する前にすべてのコマンドをキューに入れる必要があり、アクタは各コマンドの完了ステータスを記録する必要があるため、一時的な失敗時にチェーンを再送信できます。

Command パターンを使用して、履歴と取り消しを実装することもできます。

于 2011-08-05T05:13:47.797 に答える