Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8 在等待响应时,何时选择使用“参与者收件箱”或“未来”?_Java 8_Akka - Fatal编程技术网

Java 8 在等待响应时,何时选择使用“参与者收件箱”或“未来”?

Java 8 在等待响应时,何时选择使用“参与者收件箱”或“未来”?,java-8,akka,Java 8,Akka,以前我使用Java Future对象和Await.result从Akka参与者获取响应。这使我能够在Java6代码库和Akka之间建立一座桥梁 缺点:长时间运行任务期间线程阻塞 我已经迁移到Java8,并希望利用非阻塞支持将wait.Result替换为回调。从理论上讲,这将很有效。然而,我注意到,在最新版本的Java8类型安全HelloAkka教程中,Akka收件箱用于处理响应,而不是未来 收件箱是否是未来首选选项 未来(或完全未来)什么时候是更好的选择 这篇文章中的两个回答都添加了可能回答您

以前我使用Java Future对象和
Await.result
从Akka参与者获取响应。这使我能够在Java6代码库和Akka之间建立一座桥梁

缺点:长时间运行任务期间线程阻塞

我已经迁移到Java8,并希望利用非阻塞支持将
wait.Result
替换为回调。从理论上讲,这将很有效。然而,我注意到,在最新版本的Java8类型安全HelloAkka教程中,Akka收件箱用于处理响应,而不是未来

  • 收件箱是否是未来首选选项
  • 未来(或完全未来)什么时候是更好的选择

这篇文章中的两个回答都添加了可能回答您问题的上下文。Inbox(据我所知)只是使用futures和呼叫其他参与者的一种替代方法,您可以允许其他参与者从外部查询您的Inbox(类似于参与者的对象)…请参阅。另外,看看杰米·艾伦的“客串”模式。我在Stackoverflow post上发布了一个粗糙的示例

如果你想与外界沟通,你打算如何使用收件箱??我想你所拥有的只是一个对演员的推荐

考虑以下事项:

  • 你能等多久答复
  • 重播永远不会回来-你对此有何反应
  • 了解保护客户代码的断路器,以及可能出现的服务错误(此处为akka系统)
我会选择java的CompletableFuture作为接口,并在询问或告知操作后翻译akka的未来。

请看,其中的共识是“不,他们不应该”!