我需要確定消息的發件人是否是Akka羣集中的本地或遠程角色之一。目前我發現要做到這一點的唯一方法是測試角色發件人是本地還是遠程
def isLocal(sndr: ActorRef) = sndr.path.address.toString == context.system.toString
什麼是更好的方法?
我用阿卡2.3
更新: 要解釋爲什麼我想這樣做,萬一有完全避免這個問題的一種方式。
在每個節點上,路由器管理許多參與者的工作。工人演員將結果發送回本地主演員,並通過發件人引用分配新作業。主演員還定期將結果發送給其他節點的主演員,以確保數據在不同節點上的主節點之間隨機「混合」。在數據從遠程角色到達的情況下,接收主機不應該嘗試分配新的工作。它基本上是一個混合的島嶼方法的實現。
爲什麼你需要知道? Akka的一個關鍵方面是位置透明度,我會退後一步並問問你自己爲什麼會打破這一點。 – Ryan