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 客户端与整个集群断开连接的主要内容,如果未能解决你的问题,请参考以下文章

TCP和服务器断开连接后重连怎么处理

FeathersJS socketio客户端断开连接?

Socket.io 客户端在突然断开连接后无法重新连接到服务器

如何判断客户端是不是如何判断是不是与服务器断开了

swoole tcp突然断开连接

使用 Paho MQTT Js 成功连接到 Mosquitto 代理后突然断开连接