時間をかけてブロードキャスト アクターにルートを動的に追加/削除させる正しい方法は何ですか?
問題のコンテキスト: アクターは特定のアイテムの価格変更をリッスンし、他のすべてのアクター (ルート) に価格変更をブロードキャストし、内部ルールに従って行動します (たとえば、価格が X 購入または販売の場合)。
私は Akka を初めて使用しますが、ドキュメントを読んだ後、必要なコンポーネントを理解したと思いますが、私の設計または使用されているコンポーネントが間違っていると思われる場合は、コメント/回答してください。
決まったルートリストから変更したい
ActorRef actor1 = system.actorOf(new Props(LimitOrderActor.class));
ActorRef actor2 = system.actorOf(new Props(LimitOrderActor.class));
ActorRef actor3 = system.actorOf(new Props(LimitOrderActor.class));
Iterable<ActorRef> routees = Arrays.asList(new ActorRef[] { actor1, actor2, actor3 });
ActorRef actorBroadcastRouter1 = system.actorOf(new Props(TickerWatcherActor.class).withRouter(BroadcastRouter.create(routees)), "router1");
BroadcastRouter が起動して実行された後にアクターが作成される、動的にサイズ設定された BroadcastRouter のようなものに
int lowerBound = 1;
int upperBound = 10000;
DefaultResizer resizer = new DefaultResizer(lowerBound, upperBound);
BroadcastRouter broadcastRouter2 = new BroadcastRouter(resizer);
ActorRef actorBroadcastRouter2 = system.actorOf(new Props(TickerWatcherActor.class).withRouter(broadcastRouter2), "router2");
ActorRef actor4 = system.actorOf(new Props(LimitOrderActor.class).withRouter((RouterConfig) broadcastRouter2));
ActorRef actor5 = system.actorOf(new Props(LimitOrderActor.class).withRouter((RouterConfig) broadcastRouter2));
ActorRef actor6 = system.actorOf(new Props(LimitOrderActor.class).withRouter((RouterConfig) broadcastRouter2));
現在、アクター「actorBroadcastRouter2」は、意図した LimitOrderActor アクター 4、5、および 6 ではなくメッセージを受信しています。何が間違っていますか?
編集:私が探しているのは、BroadcastRouterではなくイベントバスだと思います
final ActorRef actor = system.actorOf(new Props(LimitOrderActor.class));
system.eventStream().subscribe(actor, String.class);