Akka Acteur - attendre pendant un certain temps à attendre un message, envoyer un message
Est-il possible de faire une Actor attendre pour un montant de X secondes pour recevoir un message, et si un message est reçu, le traiter comme d'habitude, sinon envoyer un message à certains autres Actor (pré-déterminé dans le constructeur)?
C'est possible, avoir un regard sur Akka Acteur "demander" et "Attendent" avec TimeoutException. Mais gardez à l'esprit que le blocage à l'intérieur d'un acteur est une très mauvaise idée car pendant ce temps, l'acteur ne peut pas gérer tous les autres messages. En outre, il bloque une Akka thread de traitement.
Une meilleure approche est d'envoyer un message (feu et oublier) et planifier un événement de délai d'attente à l'aide de Akka planificateur. Lorsque la réponse arrive, d'annuler l'événement ou définir certains pavillon de sorte qu'il ne se déclenche pas si la réponse est réellement venu à temps.
Oui, si vous voulez attendre pour tout message, il vous suffit de définir un receiveTimeout: http://doc.akka.io/docs/akka/current/scala/actors.html#receive-timeout
(La doc est un peu trompeur ici, vous pouvez définir la receiveTimeout après chaque message aussi)
OriginalL'auteur Viktor Klang
C'est possible, avoir un regard sur Akka Acteur "demander" et "Attendent" avec TimeoutException. Mais gardez à l'esprit que le blocage à l'intérieur d'un acteur est une très mauvaise idée car pendant ce temps, l'acteur ne peut pas gérer tous les autres messages. En outre, il bloque une Akka thread de traitement.
Une meilleure approche est d'envoyer un message (feu et oublier) et planifier un événement de délai d'attente à l'aide de Akka planificateur. Lorsque la réponse arrive, d'annuler l'événement ou définir certains pavillon de sorte qu'il ne se déclenche pas si la réponse est réellement venu à temps.
OriginalL'auteur Tomasz Nurkiewicz
Peut-être trop, mais vous pouvez consulter les Finite State Machine (FSM) trait.
Ici, il est en action:
OriginalL'auteur agilesteel