2016-08-02 8 views
0

Ich verwende unten Code zum Anfordern und Erhalten von Antwort von Remote-Actor. Aber irgendwann bekomme ich die richtige Antwort, aber manchmal bekomme ich eine Zeitüberschreitung. Testen Sie den Akteur auf der gleichen Maschine. Ich weiß nicht, was ich tue, falschTimeout-Ausnahme bei Anforderung an Remote-Actor

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()); 

Unter Ausnahme:

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

Was ist die Frage? Eine Ausnahme bedeutet nicht immer einen Fehler. Sie sollten Timeout konfigurieren können oder einfach erneut fragen. – m0skit0

+0

Schon habe ich Timeout auf 15 Sekunden eingestellt, also denke ich, dass es keine Notwendigkeit gibt, das Zeitlimit zu erhöhen mehr –

+1

Das einzige, was diese Ausnahme Ihnen sagt, ist, dass die Verarbeitung der Nachricht in Ihrem 'remoteControllerActor' mehr als 15 Sekunden dauert. Wahrscheinlich müssen Sie überprüfen, was dort vor sich geht, anstatt nur das Ergebnis eines Timeouts zu betrachten. – hasumedic

Antwort

0

bekam ich die Lösung darüber. Eigentlich habe ich von remoteControllerActor eine weitere asynchrone Anfrage an einen anderen entfernten Akteur gemacht, und in diesem entfernten Akteur führte ich Linux-Befehl aus, um Diskdetails zu erhalten, aber war nicht in der Lage, Ausgabe richtig zu analysieren. Deshalb habe ich die Ausnahmesperre bekommen.