我们在产品中使用了hazelcast分布式锁定和缓存功能。使用分布式锁定对我们的业务逻辑非常重要。
目前我们正在使用嵌入模式(每个应用程序节点也是一个hazelcast集群成员)。我们将切换到客户端 - 服务器模式。
我们注意到客户端服务器的问题是,一旦集群关闭一段时间,经过多次尝试,客户端就会被销毁,并且从该客户端检索到的任何对象(映射,集合等)都不再存在可用。 即使在Hazelcast群集恢复后,客户端实例也无法恢复(我们收到HazelcastInstanceNotActiveException)
我知道此问题已多次解决,最终成为功能请求:
我的问题:恢复客户的策略应该是什么?目前,我们计划在客户端流程中排队任务,如下所示。根据条件,它将尝试重新启动客户端实例... 我们将通过clientInstance.getLifecycleService()。isRunning()检查来检查客户端是否正在运行。
这是任务代码:
Observables
这种方法适合吗?我也尝试过听LifeCycle活动,但无法通过活动让它发挥作用。
问候
答案 0 :(得分:1)
在Hazelcast 3.9中,我们改变了连接和重新连接在客户端中的工作方式。您可以在文档中了解新行为:http://docs.hazelcast.org/docs/3.9.1/manual/html-single/index.html#configuring-client-connection-strategy
我希望这会有所帮助。
答案 1 :(得分:0)
在Hazelcast 3.10中,您可以将连接尝试次数从2(默认情况下)增加到最大值:
ClientConfig clientConfig = new ClientConfig(); 。clientConfig.getNetworkConfig()setConnectionAttemptLimit(Integer.MAX_VALUE的);