問題タブ [akka-supervision]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
82 参照

scala - AskTimeOutException の監視戦略はどうあるべきか

私は akka で監視を初めて使用します。ask タイムアウト例外が発生したときにどの監視戦略が適切かを知りたいのですが、より適切な再起動または再開はサンプル コードです。

私を案内してください、ありがとう

0 投票する
1 に答える
240 参照

java - Akka: Java を使用して登録されていないカスタム akka 監視戦略

Akkaライフ サイクルとアクターAkkaの監督戦略について説明します。public SupervisorStrategy supervisorStrategy()akka のライフサイクルとその回復戦略を調査するために、独自の例外とオーバーライド メソッドを作成しています。以下は私のコードです:

receive()ログをスローするメソッドではEsclateException、アクターを終了せずに続行します。しかし、例外コードを に置き換えるとthrow new Error()、アクターは作業を停止して終了します。出力から、私のSupervisorStrategy登録されていないアクターはデフォルトで実行されているようですSupervisorStrategy。ストラテジーを登録するにはどうすればよいですか?

以下は私の呼び出しコードです:

0 投票する
1 に答える
522 参照

java - Akka-Java: パイプ パターンを使用して親で Future メッセージを受信できません

1 つの親に対して 1 つの子アクターを作成しています。私の子アクターはいくつかのビジネス ロジックを実行し、値を scala Future に返します。親にメッセージを送信Futureすると、将来のメッセージをキャッチできません。以下は私のコードです:

子役

親アクター

ログ

アップデート

将来の代わりに親に送信しようとしていますtellが、それでも親はメッセージを受け取りません。以下は私の変更です:

matchAny(msg -> {System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");LOG.info("unknown message: "+ msg);})ケースがこのメッセージを処理します。しかし、何も起こりません。

更新 2

future.onFailure(futureFailureHandler(), ec);私の調査によると、ステートメントをコメントアウトすると、parent.tell(23, ActorRef.noSender());正常に実行されます。なぜこれが起こるのかまだわかりません。

私の要件は、将来のメッセージを親アクターに送信し、akka アクター システムのフォールト トレランスのために将来の障害を処理することです。

0 投票する
1 に答える
1949 参照

scala - Akka Supervisor 戦略 - 正しいユースケース

ビジネス ロジックの例外を処理するために Akka Supervisor Strategy を使用しています。

最も有名な Scala ブログ シリーズNeophyteの 1 つを読んでいると、彼が私がいつもやってきたこととは別の目的を与えていることがわかりました。

例:

外部リソースに接続する必要がある HttpActor があり、それがダウンしている場合は、例外をスローしますResourceUnavailableException

スーパーバイザーがそれをキャッチした場合、HttpActor で Restart を呼び出し、HttpActorpreRestartメソッドで do aschedulerOnceを呼び出して再試行します。

俳優:

スーパーバイザー:

ここでのポイントは何ですか?

私のdoRequestメソッドがResourceUnavailableException. 私が見る利点は、再試行回数を無料で取得できることと、例外自体を処理する優れた方法です。

ブログを見ると、再試行が必要な場合に備えて、次のようなメッセージを送信するだけの別のアプローチを示しています。

ここで の場合AskTimeoutExceptionFuture彼は結果をオブジェクトとしてパイプしComebackLater、これを処理します。

私にとって、これは戦略スーパーバイザーでできることのほとんどですが、再試行ロジックが組み込まれていない手動の方法です。

では、ここでの最善のアプローチは何ですか?またその理由は何ですか? akka スーパーバイザー戦略を使用するという私の概念は完全に間違っていますか?

0 投票する
0 に答える
800 参照

java - Akka BackOff 監視戦略

私はBackOffアクターで akka 監督を使用しています。アクターがメッセージを受信するたびに、akka デッド レター メッセージが表示されます。以下は私のログです:

以下は私のBackOffスーパーバイザーコードです:

バックオフはどのように機能し、どのように上記の問題を解決できますか?

0 投票する
1 に答える
169 参照

scala - 具体的なアクターの val として Supervisorstrategy をオーバーライドする

ScalaのActortrait は次のように定義されています。

ただし、具体的なアクターのすべてのサンプルコードは次のように定義されていることがわかります。

私が理解しようとしているのは、なぜ supervisorStrategyオーバーライドされているのvalですか?
としてオーバーライドしてみませんdefか?

メソッドが呼び出されるたびにこの評価が必要ないように、メモリの考慮事項のためですか?