我在基于微服务和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”。
如果你能帮助我,我很感激
4
投票
投票
“连接尝试限制”和“连接尝试时间段”配置元素有助于配置客户端的重新连接行为。客户端将重试ClientNetworkConfig.connectionAttemptLimit
次数以重新连接到群集。 Connection Attempt Period是ClientNetworkConfig.connectionAttemptLimit
定义的连接尝试之间的持续时间(以毫秒为单位)。以下是配置它们的示例:
ClientConfig clientConfig = new ClientConfig();
clientConfig.getNetworkConfig().setConnectionAttemptLimit(5);
clientConfig.getNetworkConfig().setConnectionAttemptPeriod(5000);
从Hazelcast 3.9开始,您可以使用配置元素reconnect-mode
来配置客户端在断开连接后如何重新连接到群集。它有三个选项(OFF
,ON
或ASYNC
)。选项OFF
禁用重新连接。 ON
以阻塞方式启用重新连接,其中所有等待的调用将被阻止,直到群集连接建立或失败。选项ASYNC
以非阻塞方式启用重新连接,其中所有等待调用将接收HazelcastClientOfflineException
。它的默认值是ON
。您可以在下面看到配置示例:
ClientConfig clientConfig = new ClientConfig();
clientConfig.getConnectionStrategyConfig()
.setReconnectMode(ClientConnectionStrategyConfig.ReconnectMode.ON);