我正在使用 ConsistentHashingGroup,我希望在集群中具有该组的路由的 Akka 节点出现故障时收到通知。
有没有办法在不订阅集群事件的情况下这样做?找到哪些路由放置在崩溃节点上的最佳方法是什么?我想从持久存储中恢复这些路由的数据。
我正在使用 ConsistentHashingGroup,我希望在集群中具有该组的路由的 Akka 节点出现故障时收到通知。
有没有办法在不订阅集群事件的情况下这样做?找到哪些路由放置在崩溃节点上的最佳方法是什么?我想从持久存储中恢复这些路由的数据。
这将需要监听集群事件。使用一致的散列,当节点拓扑发生变化(删除或添加节点)时,使用散列进行路由将意味着消息可能会开始发送到比之前路由到的另一个参与者。要了解特定参与者的哈希值,您可能必须从参与者那里报告每条消息。但是,如果状态与特定的哈希相关联,那将是有问题的,因为您如何保证在将消息路由到参与者之前恢复正确的状态。
您可能想查看基于标识符进行路由的Akka Cluster Sharding,并确保给定 id 只有一个参与者活动,在集群更改时重新平衡等。对于绑定到特定接收者的持久状态非常有用。