我需要确定消息的发送者是 Akka 集群中的本地参与者还是远程参与者之一。目前我发现这样做的唯一方法是
def isLocal(sndr: ActorRef) = sndr.path.address.toString == context.system.toString
有什么更好的方法?
我正在使用 Akka 2.3
更新: 解释我为什么要这样做,以防有办法完全避免这个问题。
在每个节点上,路由器管理许多参与者来完成工作。工作角色将结果发送回本地主角色,并通过发送者引用分配新作业。Master Actor 还定期向其他节点的 Master Actor 发送结果,确保数据在不同节点的 Master 之间随机“混合”。在数据来自远程参与者的情况下,接收主机不应该尝试分配新工作。它本质上是一个带有混合的岛方法的实现。