我有一個非基於演員的代碼片段,它將一些操作委託給一個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