我在Scala中使用Akka actors來並行處理隊列項目。我有一個擁有10個可重用子處理器動作者的MasterActor。Akka - 從終止的演員獲取信息
正在處理的項目可以是不同的類型,例如,紅色,藍色&綠色物品。在某一時刻,只能處理某種類型的單個項目。因此,如果正在處理一個紅色物品,則不能同時處理更多紅色物品。
一切都很好,但現在我嘗試爲應用程序實現良好的容錯能力,事實證明我無法獲得有關終止消息中的項目類型失敗的更多信息。如果ProcessorActor失敗,我需要在MasterActor中將適當的類型標記爲可供處理。現在我被卡住了,因爲我無法得到什麼項目類型失敗。我有一個終止消息中的ActorRef,但是afaiu在我收到消息後立即向它發送消息並不好。
最後,我可以留下所有可能的標記爲「正在處理」的類型,而實際上只是他們合適的演員已經死了。
請指教。
好吧,但這並不能解決識別什麼工作失敗的問題。我怎樣才能得到被終止的具體演員?我有終止消息中的ActorRef,但它不允許通過該引用獲取真正的ProcessorActor。 – 2013-03-19 07:18:02
雖然我的主要設計觀點是不同時允許2個綠色工作。你可以在ping上計算作業,並分配剩餘的內容 - 例如,你有1個藍色1個綠色1個紅色。藍色失敗,然後在終止處理過程中綠色似乎已經完成 - 分配藍色和綠色,忽略來自綠色的下一條消息...考慮具體的「ProcessorActor」 - 你沒有在Akka中,任何具體的角色,特別是遠程角色 - 通過消息。 – idonnie 2013-03-19 10:33:24