向远程参与者请求时获取超时异常
问题描述:
我正在使用以下代码来请求和获取远程参与者的响应。但有时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)
答
我得到了它的解决方案。其实从remoteControllerActor我做另一个异步请求到另一个远程actor,并在该远程actor,我正在运行linux命令来获取磁盘的细节,但无法正确解析输出。这就是我得到超时异常的原因。
问题是什么?例外并不总是意味着一个错误。您应该能够配置超时,或者再次询问。 – m0skit0
我已将超时设置为15秒,因此我认为不需要增加超时更多 –
此异常告诉您的唯一情况是处理'remoteControllerActor'中的消息需要超过15秒。可能你需要检查那里发生了什么,而不是看看Timeout的结果。 – hasumedic