我们目前正在从 Akka 2.0.4 更新到 2.4.2(我知道,这是一个很大的飞跃,但没有人想到要逐步做到这一点)。
无论如何,在旧的代码库中,我们的主节点连接到一些有时会失败的远程从属节点("为什么"仍有待调查)。当从站死亡时,主站会收到一个 RemoteClientShutdown 事件,我们可以从中提取getRemoteAddress
并相应地处理它(例如,通过指向故障节点地址的电子邮件通知管理员)。
在 2.4.2 版中,RemoteClientShutdown
类被 RemotingShutdownEvent 替换(至少我想是这样),RemotingShutdownEvent 作为一个对象,不携带有关事件源的任何特定信息。
我已经检查了迁移指南以及当前文档,但找不到有关如何解决此问题的信息。根据事件总线文档,提取此类信息的唯一方法是在消息中提供这些信息("请注意,事件总线不会保留已发布消息的发送方。如果您需要对原始发件人的引用,则必须在邮件中提供它")。
我是否应该以某种方式覆盖远程系统关闭时发送的消息?或者有没有其他推荐的方法来解决它?我希望这个问题不是太新手,我对 Akka 还是很陌生的。
好的,使用实际包含地址和其他有用信息的DisassociatedEvent
解决了它。事实证明,我被RemotingShutdownEvent
的名称误导了,该名称实际上是"当远程子系统关闭时"(文档)而不是在远程参与者关闭时收到的。