gpt4 book ai didi

scala - Akka 集群检测隔离状态

转载 作者:行者123 更新时间:2023-12-03 06:14:25 27 4
gpt4 key购买 nike

如何从被隔离的系统中检测隔离状态~?

我在下面看到这个日志:

[warn] 远程处理 - 尝试与无法访问的远程地址关联 [akka.tcp://Application@192.168.0.15:6000]。地址现在被门控 5000 毫秒,发送到该地址的所有消息都将被传递为死信。原因:远程系统已隔离该系统。在该系统重新启动之前,无法进一步关联到远程系统。

但我不确定如何通过代码对此使用react。

<小时/>

我找到了这个帖子:Recovering from the Quarantined state ,建议监听 QuarantinedEvent,但该事件不会在被隔离的系统上调度。

我实际上监听了所有RemotingLifecycleEvent并发现了这个:

AssociationError [akka.tcp://Application@192.168.0.100:2552] -> [akka.tcp://Application@192.168.0.15:6000]:错误 [无效地址:akka.tcp:///Application@192.168.0.15:6000] [akka.remote.InvalidAssociation:无效地址:akka.tcp://Application@192.168.0.15:6000
原因:akka.remote.transport.Transport$InvalidAssociationException:远程系统已隔离该系统。在重新启动此系统之前,无法进一步关联到远程系统。]

但这只是一个AssociationError,它也会因许多其他原因而被调度,我是否必须搜索实际的文本“远程系统已隔离该系统。” 是否有错误?

最佳答案

是的,您的建议有效,可以按如下方式完成

订阅一个actor到akka.remote.AssociationErrorEvent

override def preStart(): Unit = {
context.system.eventStream.subscribe(self, classOf[akka.remote.AssociationErrorEvent])
}

然后在receive方法中执行以下操作

override def receive: Receive = {
case e:AssociationErrorEvent =>
log.info(s"AssociationErrorEvent: $e")
if (e.cause.getCause.getMessage.contains("quarantined this system")) {
log.warning(s"We got quarantined")
}
}

关于scala - Akka 集群检测隔离状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32471088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com