Akka集群:当成员被标​​记为无法访问时,为什么我不会收到UnreachableMember事件?

时间:2017-01-20 10:10:41

标签: scala playframework akka akka-cluster

当其他节点无法访问时,我想更改群集节点的行为。这就是为什么我想在其他成员无法访问时下注的原因。

当成员无法访问时,我可以在日志中看到它:

[warn] a.c.ClusterCoreDaemon - Cluster Node [akka.tcp://application@127.0.0.1:2554] - Marking node(s) as UNREACHABLE [Member(address = akka.tcp://application@127.0.0.1:40550, status = Up)].

但是在监控集群事件的演员中(因为我可以看到会员加入或正在加入时的工作),我不会通过以下方式接收此事件:

case UnreachableMember(member) =>
  log.info("Member unreachable: {}", member.address)

我做错了什么或者我必须在配置中添加一些内容吗?

1 个答案:

答案 0 :(得分:1)

我没有收到此活动,因为我没有很好地订阅群集活动。

我这样做了:

cluster.subscribe(
  self,
  InitialStateAsEvents,
  classOf[MemberEvent])

而不是:

cluster.subscribe(
  self,
  InitialStateAsEvents,
  classOf[MemberEvent],
  classOf[UnreachableMember])

所以我不得不添加classOf [UnreachableMember],现在我收到了无法到达的群集事件。