如何正确地重新启动actor系统,并将其重新加入刚刚离开的akka​​集群?

问题描述

“重新启动参与者系统”对akka集群意味着什么? 假设我有一个种子节点A和另一个节点B,并且执行了以下代码

cmd.exe

如何在不处理actorSystemB的情况下重新启动actorSystemB并再次加入集群?

解决方法

您可以优雅地将actor系统leave设置为其当前集群,然后再次加入它(请记住,这是异步操作,不会立即发生,因此,如果要等待它,则可以挂接最多removed个事件)。

但是,这并不等同于重启actor系统,这通常意味着terminating并再次启动它。原因是角色系统本身通常会保留许多内部状态,而不会简单地将自身重置为某个初始值。有时,单个参与者的状态可能会纠缠在一起,成为导致问题的原因。在这种情况下,重新启动一个可能不相关的系统将无济于事。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...