在节点启动时创建并填充Hazelcast映射

时间:2016-12-27 16:26:18

标签: java hazelcast hazelcast-imap

在节点启动后,有没有办法在hazelcast(版本3.4)节点上执行代码片段?

这个想法是:一旦一个hazelcast节点开始创建map(不等待.getMap在客户端执行)并使用来自数据库的数据popualte,这样当客户端请求数据时,map已经被填充。 / p>

2 个答案:

答案 0 :(得分:1)

是。您需要为MapLoader实施IMap,然后使用MapLoader.loadAllKeys()方法使用热键初始化地图。

这是文档所说的:

  

您可以使用MapLoader.loadAllKeys API预先填充   首次触摸/使用地图时的内存中地图。如果   MapLoader.loadAllKeys返回NULL,然后不会加载任何内容。您的   MapLoader.loadAllKeys实现可以返回全部或部分   键。例如,您可以选择并仅返回热键。   MapLoader.loadAllKeys是预填充地图的最快方式   因为Hazelcast将通过拥有每个节点来优化加载过程   加载其拥有的条目部分。

3.5 Map Persistence Documentation Link

答案 1 :(得分:0)

这可以通过在hazelcast.xml中定义自定义服务来解决。在节点启动时调用服务构造函数,从那里可以请求并填充hazelcast映射。 但是getMap的调用应该在新的Thread

中完成