我有一段非基于 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/