我正在尝试在akka演员之间建立一个消息处理过程,以表示主给工作人员一份工作,并密切关注它。我的问题是Akka演员工作与期货交接
- 就是我下面提出一个合理的方法,并
- 即使它不是 ,我想知道如何才能正确地与期货的组成 来完成,对于为了我未来的教育。
我想的过程是这样的
1)主机发送工作,工人与ask
。它期望在5秒内得到答复,否则认为工人失去了机会,并且必须再次进入竞标。
import context.dispatcher
implicit val timeout = Timeout(5 seconds)
val workCompletedFuture = (worker ? WorkTicket(work)).mapTo[Future[WorkCompleted]]
2A)如果工人没有在5秒内做出反应,我想师傅将自身发送一个消息,说来重新分配工作。
self ! WorkAllocationFailed(work, worker)
2B)如果工人没有响应,那么它给了我们一个未来[WorkCompleted。我想等待未来完成,例如2分钟。
3a)的如果未来[WorkCompleted]未能在超时时间内完成,然后重新分配工作
self ! WorkFailed(work, worker)
3b)的如果未来[WorkCompleted]成功然后收集结果
我我试图创建这个逻辑,但是我陷入了嵌套的onComplete
混乱,我不知道如何处理Future [WorkCompleted]的超时。我尝试阅读Akka 2.10 Futures docs,但无法找出解决方案。