在未来的akka​​ java中无限期地等待演员回应

cs4*_*s4r 1 java multithreading scala akka

我有一个非基于actor的代码片段,它将一些操作委托给一个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());
Run Code Online (Sandbox Code Playgroud)

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

任何的想法?

干杯

小智 6

您可能永远不会收到答案,因为邮件传递不是100%保证.因此,无限期等待并不是一个好方法 - 你最终可能会永远等待.

您可能需要某种程度的超时(如果适合,可能需要很长的超时),然后根据需要重新发送请求的后备情况.这将是处理这种情况的更有力的方法.