在节点启动后,有没有办法在hazelcast(版本3.4)节点上执行代码片段?
这个想法是:一旦一个hazelcast节点开始创建map(不等待.getMap在客户端执行)并使用来自数据库的数据popualte,这样当客户端请求数据时,map已经被填充。 / p>
答案 0 :(得分:1)
是。您需要为MapLoader
实施IMap
,然后使用MapLoader.loadAllKeys()
方法使用热键初始化地图。
这是文档所说的:
您可以使用MapLoader.loadAllKeys API预先填充 首次触摸/使用地图时的内存中地图。如果 MapLoader.loadAllKeys返回NULL,然后不会加载任何内容。您的 MapLoader.loadAllKeys实现可以返回全部或部分 键。例如,您可以选择并仅返回热键。 MapLoader.loadAllKeys是预填充地图的最快方式 因为Hazelcast将通过拥有每个节点来优化加载过程 加载其拥有的条目部分。
答案 1 :(得分:0)
这可以通过在hazelcast.xml中定义自定义服务来解决。在节点启动时调用服务构造函数,从那里可以请求并填充hazelcast映射。 但是getMap的调用应该在新的Thread
中完成