何时在等待回复时选择使用Actor Inbox还是Futures?

时间:2015-05-27 09:51:30

标签: java-8 akka

以前我使用Java Future对象和Await.result来获取Akka actor的响应。这使我能够在Java 6代码库和Akka之间建立一个桥梁。

缺点:在长时间运行的任务中阻塞线程

我已经转移到Java 8,并且正在考虑使用非阻塞支持来用回调替换Await.Result。从理论上讲,这将很有效。但是我注意到最新版本的Typesafe HelloAkka教程使用Java 8,Akka Inbox用于处理响应而不是Future;

  • 收件箱是否使用优先选项而不是Future?
  • 未来(或可完成的未来)什么时候会成为更好的选择?

2 个答案:

答案 0 :(得分:0)

Stackoverflow帖子中的两个回复都添加了可能回答您问题的上下文。收件箱(据我所知)只是使用期货和调用其他演员的替代方法,而是允许其他演员从外部询问你的收件箱(演员喜欢的对象)......见this。另外,看看Jamie Allen的“Cameo”模式。我在this Stackoverflow帖子上发布了一个粗略的例子。

答案 1 :(得分:0)

如果你想与外界建立桥梁,你打算如何使用收件箱?我猜你所拥有的只是演员的参考。

考虑像

这样的事情
  • 你能等多久才能回复
  • 重播永远不会回来 - 你对此如何反应
  • 了解保护您的客户代码的断路器,可能出现服务错误(此处为akka系统)

我会选择java的CompletableFuture作为界面,并在询问或告知操作后翻译akka的期货。