我在游泳池中有几个演员。我希望每个演员都能创造儿童演员。问题是,当我创建子actor并保存引用时,我永远不知道哪个孩子将获得池化的actor发送给它的消息。该池创建为smallestMailBox池。 在汇集的演员的构造函数中我做了:
documentReaderActor = this.getContext().actorOf(Props.create(DocumentReaderActor.class ));
这是它的孩子。 我做了一些pattern.asks和一些讲述,但他们不会在同一个孩子身上。 首先,我做了一个:
documentReaderActor.tell(startReading, getSelf());
后来我一遍又一遍地做:
Future<Object> future = Patterns.ask(documentReaderActor, adSend,
timeout);
adReceive = (AkkaDocument) Await.result(future, timeout.duration());
(adReceive和adSend是一个AkkaDocument类对象)
当我完成后,我发送:
documentReaderActor.tell(documentDone, getSelf());
所以我有10个这些合并的演员各自创造一个儿童演员,但这些消息不会每次都转到同一个孩子身上。我怎样才能保证这位合并的演员只与他们的孩子交谈?
答案 0 :(得分:0)
Akka的SmallestMailBox路由器的工作方式是它会根据显示的顺序将发送到其ActorRef的任何消息重定向到其中一条路由:
从您的角度来看,这意味着您无法保证对您的某个Asks的响应最终会出现在创建它的同一个角色上。
如果您想使用游泳池,可能需要推出自己的Custom Router。