Akka Schauspieler - warten Sie einige Zeit, um zu erwarten, dass eine Nachricht, ansonsten eine Nachricht senden
Ist es möglich, einen Actor
warten für X Anzahl der Sekunden zu erhalten, jede Nachricht, und wenn eine Nachricht empfangen wird, verarbeiten Sie es wie gewohnt, ansonsten senden eine Nachricht zu einige andere Actor
(pre-bestimmt im Konstruktor)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, wenn Sie wollen, zu warten, für alle Nachricht, stellen Sie einfach eine receiveTimeout: http://doc.akka.io/docs/akka/current/scala/actors.html#receive-timeout
(Die Doku ist etwas irreführend hier können Sie die receiveTimeout nach jeder Nachricht auch)
Ist es möglich, einen Blick auf Akka Schauspieler - "Fragen" und "Erwarten" mit TimeoutException. Aber Bedenken Sie, dass das blocken von innen ein Akteur ist eine sehr schlechte Idee, da in dieser Zeit Schauspieler können nicht damit umgehen, alle anderen Nachrichten. Außerdem blockiert es eine Akka-Verarbeitung-thread.
Ein besserer Ansatz ist, eine Nachricht zu senden (Feuer-und-vergessen) und planen Sie einige timeout-Ereignis mit Akka-scheduler. Wenn die Antwort eintrifft, stornieren, die Ereignis-oder einige-flag, so dass Sie wird nicht ausgelöst, wenn die Antwort kam tatsächlich pünktlich.
Vielleicht ein overkill, aber Sie können überprüfen Sie heraus die Finite State Machine (FSM) Merkmal.
Hier ist es in Aktion: