この面白い問題があり、問題を特定できません。
この「シンプルな」akka アプリケーションがあります。主な目標は、データベース内のすべてのドキュメントを調べることです。メイン アクターは、データベースと通信する単一のアクターに行を要求します。取得された各ドキュメントは、メイン アクターに返されます。バッチによって、これらのドキュメントはバランシング ディスパッチャによって管理されるメッセージ キューに追加されます。小さな労働者がそれらを調べて選別します。
数時間後 (通常は 2 ~ 4 時間)、すべてのアクターが最大 5 秒間隔で同時に停止します。
似たようなものを見たことがある人がいるのだろうかと思っていました。
詳細については:
- 私はAkka 2.2.0を使用しています
- ask メッセージは使用されず、tell のみが使用されます
- Await のようなスレッド ロック メソッドは使用しません。
- DeadLetters は、すべてがシャットダウンすることを私が知っている理由です
ご協力ありがとうございました
DeadLetters を見ると、私のバランシング ディスパッチャー / ラウンド ロビン ルーターに関連するアクターだけが停止しているように見えます。私が見逃したものはありますか?
私のスカラ
val workers: ActorRef = context.system.actorOf(
Props(new WorkerActor)
.withRouter(FromConfig())
.withDispatcher("balancing-dispatcher"),
"round-robin"
)
私の設定コード
balancing-dispatcher {
type = BalancingDispatcher
executor = "fork-join-executor"
}
akka.actor.deployment {
/round-robin {
router = round-robin
nr-of-instances = 50
resizer {
lower-bound = 10
upper-bound = 100
}
}
}