服务器重启后如何将 HazelcastClient 重新连接到 HazelcastServer

How to reconnect a HazelcastClient to HazelcastServer after server restart

我在基于微服务和 springboot 的架构中使用 hazelcast 时遇到问题。 我将其中一个应用程序保留为将成为 hazelcast 服务器的应用程序,而其他应用程序则是其客户端。 但是,如果我必须更新作为 hazelcast 服务器的应用程序,缓存的客户端应用程序会推翻与服务器的连接,并且当我启动新版本的服务器时,这些客户端应用程序不会重新连接。 是否有任何关闭设置 hazelcastclient 在服务器上进行池化以尝试在它回来后立即重新连接? 我的客户如下:


    @bean
    open fun hazelcastInstance(): HazelcastInstance? {
    return try {
    val clientConfig = ClientConfig()
    HazelcastClient.newHazelcastClient(clientConfig)
    } catch (e: Exception) {
    log.error("Could not connect to hazelcast server, server up without cache")
    null
    }

}

如果我的服务器出现故障,我会收到 "com.hazelcast.client.HazelcastClientNotActiveException: Client is shutdown"。

如果你能帮助我,我将不胜感激

连接尝试限制和连接尝试周期配置元素有助于配置客户端的重新连接行为。客户端将重试 ClientNetworkConfig.connectionAttemptLimit 次以重新连接到集群。 Connection Attempt Period 是由 ClientNetworkConfig.connectionAttemptLimit 定义的连接尝试之间的持续时间(以毫秒为单位)。以下是如何配置它们的示例:

ClientConfig clientConfig = new ClientConfig();
clientConfig.getNetworkConfig().setConnectionAttemptLimit(5);
clientConfig.getNetworkConfig().setConnectionAttemptPeriod(5000);

从 Hazelcast 3.9 开始,您可以使用配置元素 reconnect-mode 来配置客户端在断开连接后如何重新连接到集群。它具有三个选项(OFFONASYNC)。选项 OFF 禁用重新连接。 ON 以阻塞方式启用重新连接,所有等待的调用都将被阻塞,直到集群连接建立或失败。选项 ASYNC 以非阻塞方式启用重新连接,所有等待的调用都将收到 HazelcastClientOfflineException。它的默认值为 ON。您可以在下面查看配置示例:

ClientConfig clientConfig = new ClientConfig();
clientConfig.getConnectionStrategyConfig()
               .setReconnectMode(ClientConnectionStrategyConfig.ReconnectMode.ON);