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

Akka cluster: why don't I receive a UnreachableMember event when a member is marked unreachable?

我想在无法访问其他节点时更改集群节点的行为。这就是为什么我想在无法联系到其他成员时打赌通知。

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

[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)].

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

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

我是做错了什么还是必须在配置中添加一些东西?

我没有收到这个事件,因为我没有很好地订阅集群事件。

我这样做了:

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

而不是这个:

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

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