我们有一个用例,我们有如下设置: 主类型的Actor和worker类型的Actor。akka patterns.ask实现细节
主站接收到输入的工作请求并使用工作人员编排并生成结果。
有一个计划来创建一个名为client.java的Java类。这将创建一个新的主实例并将工作发送给它。此客户端使用 - Patterns.ask来获取将来的指针,并在其后得到结果,直到结果到达。
Patterns.ask(master, initialMessage, t);
Await.result to get the message
Patterns.ask的内部文件说将创建一个临时actor。但是,当我调用并尝试打印master中的发送者的hashCode时,每次都看起来是同一个actor。
我有以下的忧虑:
- 如何Patterns.ask的并发调用管理?它可以在调用后像线程一样发生,请求获取将来的指针,但将错误的数据放入其中?
- 它如何保证未来的指针只填充相关的响应而不与其他人的响应混淆?
对于例如:FutureX =未来预计X消息
FutureY =未来预计Y消息
FutureX能否获得Y和FutureY获得X?
对于这个问题的上下文,让我们假设,我需要阻止。鉴于此,如何处理Patterns.ask的并发执行?如何问是在里面实现的?这位演员被用来接收最终数据(作为问答的结果),它的生活是什么以及它是如何分享的?这个actor如何在正确的Future对象中填充正确的数据? –
这是否意味着使用Patterns.ask创建的actor将拥有所有响应,并可能保持它发送的期货的hashmap以及响应并更新waiter \ –