Hazelcast 客户端与整个集群断开连接
Posted
技术标签:
【中文标题】Hazelcast 客户端与整个集群断开连接【英文标题】:Hazelcast client disconnect from whole cluster 【发布时间】:2021-09-08 17:04:26 【问题描述】:当客户端与集群断开连接时(不仅仅是单个成员),集群成员是否可以接收回调。
在客户端,仅当客户端与集群完全断开连接时才会调用断开生命周期事件,但在集群成员上,当出现套接字断开/错误时,“所有者”成员似乎会获取断开/连接生命周期事件,因此我们不能将断开连接用作集群断开连接的指示(它只是暂时与此所有者成员断开连接)。
我们希望使用客户端断开连接(与整个集群)作为清除共享状态的触发器,特别是从由客户端 UUID 键入的 IMap 中删除条目
【问题讨论】:
【参考方案1】:您可以将侦听器添加到客户端服务。
var hazelcast = Hazelcast.newHazelcastInstance();
hazelcast.getClientService().addClientListener(new ClientListener()
@Override
public void clientConnected(Client client)
// TODO
@Override
public void clientDisconnected(Client client)
// TODO
);
【讨论】:
我在配置中添加了一个客户端侦听器,这与使用“getClientService().addClientListener”添加它有什么不同吗?我正在使用 config.addListenerConfig(listenerConfig);但是正在调用 clientDisconnected(Client client) 以从集群中暂时断开连接,我认为这仅适用于“所有者”成员,其他集群成员不会断开连接并重新连接。所以我不能使用 clientDisconnected 方法,因为它可能是暂时断开而不是整个集群断开。我们正在使用 4.0.3以上是关于Hazelcast 客户端与整个集群断开连接的主要内容,如果未能解决你的问题,请参考以下文章