java - 在未来的 akka java 中无限期地等待 Actor 的回应

标签 java multithreading scala akka

我有一段非基于 actor 的代码,它将一些操作委托(delegate)给 akka actor,我想无限期地等待这个 actor 响应,我的意思是,直到这个 actor 返回响应为止。问题是我不知道如何使用 Pattern.ask 和 Await.result 方法在 Future 中无限期等待。

我更喜欢这样的东西:

Timeout timeout = new Timeout(Duration.inf());
Future<Object> future = Patterns.ask(actor, msg, timeout);
String result = (String) Await.result(future, timeout.duration());

但这不起作用,因为 Timeout 不接受 Duration 对象作为构造函数参数,它只接受 FiniteDuration objetcs...

有什么想法吗?

干杯

最佳答案

您可能永远不会收到答复,因为不能 100% 保证消息送达。因此,无限期地等待并不是一个好方法——您很可能最终会永远等待。

您可能需要一定程度的超时(如果合适的话,可以是一个很长的超时),然后是一个后备案例,您可以在必要时重新发送您的请求。这将是处理这种情况的更可靠的方法。

关于java - 在未来的 akka java 中无限期地等待 Actor 的回应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149945/

相关文章:

java - 基于 Unix 的系统上的 File.separator

java - 如何使用 JAVA 代码以编程方式捕获线程转储?

Scala平面图签名定义

Java - 如何使用 Scanner 将文本文件的值存储到数组中?

Java使用Jsoup从html代码获取链接

java - 重用 Runnable 的最佳方式

python - 为了提高我的 python 程序的速度,我应该生成一个单独的线程还是一个单独的进程来进行日志记录?

c# - HttpListener 的多线程应答

scala - 猫效应 IO : Compose IO with Scala collections

scala - 使用/不使用 Spark SQL 连接两个普通 RDD