在应用程序启动时加载 hazelcast imap

Load hazelcast imap on application startup

如何在 startup 中加载 map。我的 hazelcast.xml 文件中有以下配置 inital mode eager。但它仍然只在第一次访问地图时加载。

  <map name="cpMap">
        <map-store enabled="true" initial-mode="EAGER">
            <class-name>com.hazelcast.samples.spring.data.migration.CPLoader</class-name>
        </map-store>
    </map>

我也有 map loader 实现 bean。我为此使用 spring。

documentation 对此非常清楚:

When getMap() is first called from any member, initialization starts depending on the value of InitialLoadMode. If it is set to EAGER, initialization starts on all partitions as soon as the map is touched, i.e., all partitions are loaded when getMap is called.

因此,应该访问地图 以便地图开始自行填充 。如果您使用 Spring,我建议使用 CommandLineRunner bean 来访问地图并启动该过程。

您可以在应用程序就绪后调用地图或通过 Spring 的 EventListener 调用任何 Spring 上下文更改事件,如下所示。

 @EventListener(ApplicationReadyEvent.class)
 public void myAppReadyMethod() {
        // Call any map
        hz.getMap("myMap"); // Assumed hazelcast instance is already injected
 }

你可以看看,Spring申请javadocs, context events javadocs