2016-03-24 4 views
1

オリジナルの記述は、いくつかの調査後に更新されます。Akkaのaskパターンで失敗したメッセージの繰り返し処理を防止する方法は?私が掲載したパターンを経由してアクターにメッセージを送信すると</p> <p>、そして俳優が例外で失敗し、メッセージが再び処理されます。

正確な再試行回数はさまざまで、私はその原則を理解できませんでした。ほとんどの私の実験では、失敗したメッセージが3回再試行されます。

Ask-patternの動作を微調整するにはどうすればよいですか(たとえば、予測可能な再試行回数を設定するなど)。

+0

どのように?メッセージが来たら、インクリメントされたカウンタでクローンを作成します。その後、試行回数が制限を超えているかどうかを確認して、メッセージをアクタ自体の中にドロップできますか? 'case RetryMessage(payload、counter)counter> limit => // drop it' – kukido

答えて

1

あなたがデフォルトとしているのはデフォルトではないと思いますので、私は多少混乱しています。失敗したメッセージは、デフォルトで3回処理されません。デフォルトでは、Actorで例外が発生すると、そのActorは再起動され、次のメッセージで続行されます。あなたの質問にそうhttp://doc.akka.io/docs/akka/current/scala/fault-tolerance.html#Default_Supervisor_Strategy

を参照してください:

どのように私は私の俳優を再起動しますロジックを実装することができますが、 失敗したメッセージをスキップし、何度も何度もそれを処理しようとしないのだろうか?

これがデフォルトです。

ガーディアンアクターのデフォルトのスーパーバイザーはどのように実装されていますか? 誰かがGithubでこの場所を見つける方法を知っているとすれば、 はかなり役に立ちます。メッセージ自体に試行回数を追加する方法について

https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/actor/FaultHandling.scala#L154

+0

私はいくつかの調査を行い、ask-patternを使用するとすべての再試行が行われたことが判明しました。私は説明を更新した – Roman

関連する問題