2016-12-27 36 views
0

在节点启动后,有没有在hazelcast(版本3.4)节点上执行代码片段的方法?在节点启动时创建并填充Hazelcast地图

这个想法是:一旦hazelcast节点开始创建映射(不等待在客户端执行.getMap)并且从数据库中弹出数据,以便当客户端请求数据时,map已经被填充。

回答

0

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

1

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

这是个什么文件说:

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

3.5 Map Persistence Documentation Link

+0

问题是loadAllKeys在调用getMap(“当第一次触摸/使用地图时”)时被调用。 我需要一些方法来在节点被注视之后调用它,以确保它在工作时间之外发生。 – ataurenis

+0

我建议在启动节点启动脚本时加入该步骤。 –