【问题标题】:How to subscribe the event of becoming LEADER in Akka Cluster Singleton Pattern如何在 Akka Cluster Singleton Pattern 中订阅成为 LEADER 的事件
【发布时间】:2014-07-29 06:39:11
【问题描述】:

作为Akka Singleton集群的实例成员,如何在Akka Cluster Singleton Pattern中订阅成为LEADER的事件。

application.conf 如下:

akka {
actor {
  provider = "akka.cluster.ClusterActorRefProvider"
  deployment {
    /singleton/registerService/workerRouter {
      router = consistent-hashing-pool
      nr-of-instances = 100
      cluster {
        enabled = on
        max-nr-of-instances-per-node = 3
        allow-local-routees = on
        use-role = registers
      }
    }
  }
}
remote {
  log-remote-lifecycle-events = off
  netty.tcp {
    hostname = "127.0.0.1"
    port = 0
  }
}

cluster {
  seed-nodes = [
    "akka.tcp://PashRegister@127.0.0.1:2051",
    "akka.tcp://PashRegister@127.0.0.1:2052"]

  auto-down-unreachable-after = 5s

  roles = ["registers"]
}
}

【问题讨论】:

    标签: akka akka-cluster


    【解决方案1】:

    集群单例的想法是它将代表您启动 - 所以当这样的参与者启动时,它是“领导者”(如“运行单例”)。

    【讨论】:

      【解决方案2】:

      如果要在领导者更改时通知问题(例如,当第一个启动的单例已被关闭时),那么我发现知道谁是领导者的唯一方法是执行以下操作:

      • 让演员订阅所有 MemberEvents
      • 每当发生 MemberUp 或 MemberRemoved 事件时:
        • 更新单身人士所拥有角色的成员的排序列表(按 Member.ageOrdering 排序)
        • 此列表的第一个元素是当前领导者

      基本上,我正在重新实现选择新领导者背后的逻辑。 希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-15
        • 1970-01-01
        • 2016-01-22
        • 1970-01-01
        • 2016-05-06
        • 1970-01-01
        相关资源
        最近更新 更多