2016-08-02 43 views
0

我正在使用以下代碼來請求和獲取遠程參與者的響應。但有時Iam得到正確的響應,但有時會得到超時異常。在同一臺機器上測試兩個角色。不知道我在做什麼錯向遠程參與者請求時獲取超時異常

final Timeout timeout = new Timeout(15, TimeUnit.SECONDS); 
final Future<Object> future = Patterns.ask(remoteControllerActor, com, timeout); 
final String result = (String) Await.result(future, timeout.duration()); 

以下異常:

java.util.concurrent.TimeoutException: Futures timed out after [15 seconds] 
at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) 
at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) 
at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:116) 
at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) 
at scala.concurrent.Await$.result(package.scala:116) 
at scala.concurrent.Await.result(package.scala) 
+0

問題是什麼?例外並不總是意味着一個錯誤。您應該能夠配置超時,或者再次詢問。 – m0skit0

+0

我已將超時設置爲15秒,因此我認爲不需要增加超時更多 –

+1

此異常告訴您的唯一情況是處理'remoteControllerActor'中的消息需要超過15秒。可能你需要檢查那裏發生了什麼,而不是看看Timeout的結果。 – hasumedic

回答

0

我得到了它的解決方案。其實從remoteControllerActor我做另一個異步請求到另一個遠程actor,並在該遠程actor,我正在運行linux命令來獲取磁盤的細節,但無法正確解析輸出。這就是我得到超時異常的原因。