向远程参与者请求时获取超时异常

问题描述:

我正在使用以下代码来请求和获取远程参与者的响应。但有时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

我得到了它的解决方案。其实从remoteControllerActor我做另一个异步请求到另一个远程actor,并在该远程actor,我正在运行linux命令来获取磁盘的细节,但无法正确解析输出。这就是我得到超时异常的原因。