我正在嘗試在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,但無法找出解決方案。