簡體   English   中英

Hazelcast:如何刷新Hazelcast實例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM