2016-08-02 2 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에서 또 다른 비동기 요청을 다른 원격 액터로 보내고 그 원격 액터에서 디스크 세부 정보를 얻기 위해 linux 명령을 실행하고 있었지만 출력을 제대로 구문 분석 할 수 없었습니다. 그래서 타임 아웃 예외가 발생했습니다.

관련 문제