【问题标题】:Akka: How to find the current nodes in a cluster by role?Akka:如何按角色查找集群中的当前节点?
【发布时间】:2017-04-03 14:48:30
【问题描述】:

我正在使用集群,我想按角色 (selector) 向集群中的所有节点发送消息 - 类似于 broadcast,但响应第一次成功或全部失败。我不想等待超时,例如ScatterGatherFirstCompletedGroup

我想到的一种方法是创建自己的广播,但我必须知道有多少演员在等待响应。万一他们都失败了,我会立即回复。有没有办法按角色查找集群中的当前节点?

或者有什么其他建议?

【问题讨论】:

    标签: scala akka broadcast akka-cluster


    【解决方案1】:
     implicit lazy val actorSystem: ActorSystem = ActorSystem("mysystem")
     lazy val cluster = Cluster(actorSystem)
     cluster.state.members.filter(m => m.hasRole("admin"))
    

    【讨论】:

      【解决方案2】:

      您可能需要考虑将@Patrik Nordwall 的answer 添加到您的角色条件以适应更一般的查找集群节点问题 - 例如。在case m if m.status == MemberStatus.Up => m.address等中添加m.hasRole(role)的条件

      【讨论】:

        【解决方案3】:

        您还可以创建集群广播路由器,然后通过向路由器发送GetRoutees 消息来获取其路由。另见https://doc.akka.io/docs/akka/2.3/scala/routing.html#Managagement_Messages

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-28
          • 2016-02-06
          • 2020-10-05
          • 1970-01-01
          • 2014-08-22
          • 2021-04-27
          相关资源
          最近更新 更多