J'essaie de construire un processus de messagerie entre les acteurs Akka pour représenter le maître donnant un travail au travailleur, et de garder un œil sur elle. Ma question estAkka acteur transfert de travail avec Futures
- Est-ce que je propose ci-dessous une approche raisonnable et
- même si elle est pas, je voudrais savoir comment cela pourrait se faire correctement avec la composition des contrats à terme, pour la l'amour de mon éducation future.
Le processus que je voudrais quelque chose comme ça va
1) maître envoie travail des travailleurs avec un ask
. Il attend une réponse dans les 5 secondes, sinon il considère que le travailleur a perdu sa chance et il devra recommencer à enchérir.
import context.dispatcher
implicit val timeout = Timeout(5 seconds)
val workCompletedFuture = (worker ? WorkTicket(work)).mapTo[Future[WorkCompleted]]
2a) Si le travailleur ne répond pas dans les 5 secondes, je voudrais que le maître lui-même envoyer un message disant à réattribuer le travail.
self ! WorkAllocationFailed(work, worker)
2b) Si le travailleur ne répond alors il nous donne un avenir [WorkCompleted]. J'aimerais attendre que l'avenir soit terminé pour, disons, 2 minutes.
3a) Si Future [WorkCompleted] ne parvient pas à terminer dans le délai réattribuer alors le travail
self ! WorkFailed(work, worker)
3b) Si l'avenir [WorkCompleted] réussit recueillir le résultat
I J'ai essayé de créer cette logique, mais je suis dans un pétrin avec onComplete
imbriqué, et je ne sais pas comment faire le délai d'attente sur le futur [WorkCompleted]. J'ai essayé de lire le Akka 2.10 Futures docs, mais n'a pas pu trouver une solution.