在第一次尝试失败的情况下,Hazelcast无法从MapLoader重新启动地图。 MapLoader从数据库加载数据。
测试用例:
因此,当没有重新启动时,无法初始化Map时,Hazelcast会进入状态。
你遇到过这样的行为吗?
推荐,请,解决方法或解决方案?
更新
如果从客户端成员方调用map.keySet(),则会重现此类行为。
答案 0 :(得分:0)
当您尝试通过地图获取/放置/删除数据时,Hazelcast仅调用相关的MapStore
和MapLoader
方法。没有特定的方法调用来初始化数据库连接(Hazelcast提供了一个MapLoaderLifecycleSupport
接口来初始化MapLoader实现,但是它的init()
方法只在第一次使用地图时被调用在Hazelcast实例上,而不是每次执行地图操作时。)
因此;您需要在MapStore
实施中自行处理数据库连接问题。例如;当您尝试在实施中向/从数据库中放入/读取/删除数据时,您需要检查连接并重新建立它是否存在。
答案 1 :(得分:0)
经过长时间调查未发现问题原因,但是如果失败后初始化Hazelcast映射则调用map.size()。 这很奇怪,但它确实有效。