1

編集:私が言及するのを忘れた重要なことの1つ:以下で説明するアクターの作成はデータに依存します-必要な処理アクターが少ない場合もあれば、多い場合もあります。

私が取り組んでいる1つのコンポーネントは、処理するメッセージをかなり大量に取得する多数のアクター(おそらく、ラウンドロビン方式のアクター)を作成する必要があります。これらの各アクターは、同じ初期化パラメーターを持つ「処理バッチ」に属しています。

多くのメッセージを含む本番マシンでこれを実行すると、アクターの作成タイムアウトがすぐに発生します。で直接アクターを作成していActorSystem.actorOf()ます。

しかし、私が驚いたのは、全体として、作成されているアクターがそれほど多くないことです(5つのラウンドロビンルーティングアクターを含む8つの「処理シンク」は40のアクターになりますが、それほど多くはないようです)。

別のアクター(「処理」アクターを介して取得する成功と失敗の量をカウントする)にアクターを送信させることで、アクターが不要になったらPoisonPillシャットダウンするので、すべてシャットダウンされていると思います正しくダウンします。

私はおそらく、これらのアクターを作成する方法で、ここで何か間違ったことをしているのでしょうか。たとえば、別の方法で作成する必要がありますか?または、新しいアクターを作成する前に、いくつかのバッチが完了するのを待つのが適切な戦略でしょうか?

4

1 に答える 1

0

使用しているバージョンを指定しなかったので、これを読むことに興味があると思います。

http://doc.akka.io/docs/akka/2.0.3/scala/actors.html#Creating_Actors_with_default_constructor(特に警告)

技術的な議論に加えて、トップレベルでアクターを作成することは良い設計ではなく、障害処理の利点を逃しています。

于 2012-10-25T09:46:08.240 に答える