我有一个非基于演员的代码片段,它将一些操作委托给一个akka演员,我想无限期地等待这个演员的响应,我的意思是,直到这个演员无论何时都会返回响应。问题是我不知道如何使用Pattern.ask和Await.result方法在Future中无限期地等待。等待演员回应无限期在未来akka java
我想是这样的:
Timeout timeout = new Timeout(Duration.inf());
Future<Object> future = Patterns.ask(actor, msg, timeout);
String result = (String) Await.result(future, timeout.duration());
但这不起作用,因为超时不接受持续时间对象作为构造函数的参数,它仅接受FiniteDuration objetcs ...
任何想法?
干杯
FiniteDuration被强制执行,原因很充分。但是正如所建议的那样,“新的TimeOut(Long.MAX_VALUE,TimeUnit.DAYS)”应该会让你有足够的时间去死数次。 – 2014-10-01 21:27:19
您无法超过292年的超时时间,否则您将收到IllegalArgumentException:需求失败:持续时间限制为292年。我想你最多只能通过21474835秒。 – Ravi 2016-06-11 18:37:57
@Ravi虽然它是正确的,最大值是21474835秒这只是248天(不是几年)。 – kap 2017-08-24 09:26:37