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

问题描述 投票:0回答:2

如何将map加载到startup中。我在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 hazelcast
2个回答
1
投票

documentation很清楚:

首先从任何成员调用getMap()时,初始化将取决于InitialLoadMode的值而开始。如果将其设置为EAGER,则一旦触摸映射,就会在所有分区上开始初始化,,在调用getMap时将加载所有分区。

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


1
投票

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

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

您可以看一下,Spring应用程序javadocs,上下文事件javadocs

© www.soinside.com 2019 - 2024. All rights reserved.