編集:私が言及するのを忘れた重要なことの1つ:以下で説明するアクターの作成はデータに依存します-必要な処理アクターが少ない場合もあれば、多い場合もあります。
私が取り組んでいる1つのコンポーネントは、処理するメッセージをかなり大量に取得する多数のアクター(おそらく、ラウンドロビン方式のアクター)を作成する必要があります。これらの各アクターは、同じ初期化パラメーターを持つ「処理バッチ」に属しています。
多くのメッセージを含む本番マシンでこれを実行すると、アクターの作成タイムアウトがすぐに発生します。で直接アクターを作成していActorSystem.actorOf()
ます。
しかし、私が驚いたのは、全体として、作成されているアクターがそれほど多くないことです(5つのラウンドロビンルーティングアクターを含む8つの「処理シンク」は40のアクターになりますが、それほど多くはないようです)。
別のアクター(「処理」アクターを介して取得する成功と失敗の量をカウントする)にアクターを送信させることで、アクターが不要になったらPoisonPill
シャットダウンするので、すべてシャットダウンされていると思います正しくダウンします。
私はおそらく、これらのアクターを作成する方法で、ここで何か間違ったことをしているのでしょうか。たとえば、別の方法で作成する必要がありますか?または、新しいアクターを作成する前に、いくつかのバッチが完了するのを待つのが適切な戦略でしょうか?