Scala Akka中的Ask模式
我有一个关于阿克卡提问模式的问题 我正在使用应用程序中的ask模式调用一个参与者。我的应用程序是一个普通类(不是参与者本身): 但是,上面调用的参与者调用第二个参与者,如:Scala Akka中的Ask模式,scala,akka,Scala,Akka,我有一个关于阿克卡提问模式的问题 我正在使用应用程序中的ask模式调用一个参与者。我的应用程序是一个普通类(不是参与者本身): 但是,上面调用的参与者调用第二个参与者,如: secondActor ! msg(sender) 第二个参与者返回实际响应,如: originalSender ! responseMsg 所以基本上涉及到一个间接寻址,当Actor1调用Actor2时,它使用 我测试了代码,它运行正常。但是我不确定上面的代码是否正确 那么,我是否应该始终在actor1和actor2调
secondActor ! msg(sender)
第二个参与者返回实际响应,如:
originalSender ! responseMsg
所以基本上涉及到一个间接寻址,当Actor1调用Actor2时,它使用代码>
我测试了代码,它运行正常。但是我不确定上面的代码是否正确
那么,我是否应该始终在actor1和actor2调用之间使用?
,并尝试管道传输结果?或者我可以使用代码>在中间调用之间以及当我想返回到原始调用方时,只需向我传递的引用发送一条消息?您当前的方法非常好。事实上,最好使用tell
(!
)进行参与者之间的交流。从:
使用ask
会对性能产生影响,因为需要跟踪超时时间,因此需要有某种东西将承诺
连接到ActorRef
中,并且还需要通过远程处理来访问它。因此,对于性能,始终首选tell
,只有在必要时才选择ask
[Tell]是发送消息的首选方式。无阻塞等待消息。这提供了最佳的并发性和可伸缩性特征
根据文档,没关系:ActorRefs可以通过消息传递在参与者之间自由共享。请查看文档以了解更多详细信息。
originalSender ! responseMsg