0

我们目前正在从 Akka 2.0.4 更新到 2.4.2(我知道,这是一个很大的飞跃,但没有人想过逐步进行)。

无论如何,在旧代码库中,我们的主节点连接到一些有时会失败的远程从节点(“为什么”仍有待调查)。当一个slave死掉时,master会收到一个RemoteClientShutdown事件,我们可以从中提取getRemoteAddress并相应地处理它(例如,每封指向故障节点地址的电子邮件通知管理员)。

在版本 2.4.2 中,该类被RemotingShutdownEventRemoteClientShutdown替换(至少我认为是这样),作为一个对象,它不携带有关事件源的任何特定信息。

我检查了迁移指南以及当前文档,但找不到有关如何解决此问题的信息。根据事件总线文档,提取此类信息的唯一方法是在消息中提供它(“请注意,事件总线不保留已发布消息的发送者。如果您需要对原始发送者的引用,则必须在消息中提供它”)。

我应该以某种方式覆盖远程系统关闭时发送的消息吗?或者有没有其他推荐的方法来解决它?我希望这个问题不是太新手,我对 Akka 还是很陌生。

4

1 回答 1

0

好的,使用DisassociatedEvent实际包含地址和其他有用信息的方法解决了它。事实证明,我被RemotingShutdownEvent实际收到的名称误导了“当远程处理子系统已关闭时”(docs),而不是在远程参与者已关闭时。

于 2016-04-19T13:05:52.203 回答