[英]Hazelcast: How to refresh the Hazelcast Instance?
我正在創建將一直運行的服務(ReST)。 因此,在此服務中,我從我的spring上下文調用init方法,該方法會訪問數據庫並將所需數據加載到hazelcast實例中。
現在,我必須確保通過調用init方法刷新hazelcast實例。 假設刷新周期為每6小時一次。
有沒有一個好的清潔方法來實現這一目標?
您可以使用Hazelcast逐出策略來解決此問題。
<time-to-live-seconds>3600</time-to-live-seconds>
它將每1小時清除一次地圖內容,並且在收到任何請求時會從加載程序重新加載該地圖內容。
以下是Hazelcast地圖配置之一
...
<!--
Maximum number of seconds for each entry to stay in the map. Entries that are
older than <time-to-live-seconds> and not updated for <time-to-live-seconds>
will get automatically evicted from the map.
Any integer between 0 and Integer.MAX_VALUE. 0 means infinite. Default is 0.
-->
<time-to-live-seconds>0</time-to-live-seconds>
...
或者,您可以在將數據添加到高速緩存映射時添加時間,在指定的時間之后,特定的高速緩存映射也可以清除。
通過實現Hazelcast提供的EntryListener接口,可以輕松實現這一點。
實現以下方法並調用您的init()方法。
IMap<> map = hzInstance.getMap("mapName");
map.addEntryListener(new MyMapEventListener());
public class MyMapEventListener implements EntryListener{
@Override
public void mapCleared(MapEvent mapEvent) {
//Make your init call inside this
}
@Override
public void mapEvicted(MapEvent mapEvent) {
//Make your init call inside this
}
}
讓我知道這是否有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.