在应用程序启动时加载 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
}
如何在 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 ofInitialLoadMode
. If it is set toEAGER
, initialization starts on all partitions as soon as the map is touched, i.e., all partitions are loaded whengetMap
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
}