我正在尝试使用Apache Curator在与Zookeeper的连接上实现后备逻辑,基本上我有两组连接字符串,如果在状态侦听器上收到LOST状态,则尝试在另一组上重新连接我的curator客户端连接字符串。我可以简单地将所有计算机放在相同的连接字符串上,但是仅当默认群集的所有计算机都处于脱机状态时,我才想进行回退连接。
问题是,当我尝试切换到后备集群时,我无法关闭先前的策展人客户端,即使在连接了动物园管理员的后备集后,我仍然收到LOG消息,指出策展人正在尝试重新连接。在下面,您可以找到我想要做的代码示例:
final ConnectionStateListener listener = (client1, state) -> {
if (state == ConnectionState.LOST) {
reconnect();
}
};
和重新连接方法(会将lastHost更改为备用群集):
if (client != null) {
client.close();
}
...
client = CuratorFrameworkFactory.newClient(
lastHost,
sessionTimeout,
connectionTimeout,
retryPolicy);
...
client.start()
我可以成功连接新的连接字符串集(后备),但问题是以前的客户端继续尝试连接以前的连接字符串。
[查看close()
方法,我看到策展人仅在客户端状态为STARTED的情况下才关闭事物,我认为这就是为什么策展人不断尝试连接上一个集群的原因。
是否可以在没有启动状态的情况下关闭策展人客户端?
如果没有,在策展人上实现该逻辑(后备Zookeeper服务器)的另一种方法?
谢谢。
会话暂停时已过去。注入会话期满。过去的毫秒:44122038。调整的会话超时毫秒:5000无法注入会话过期
此日志重复并填充日志。如何关闭连接并开始新的连接。我无法使用旧的connectionSting关闭前一个或打开新的连接。