2016-12-27 40 views
0

在節點啓動後,有沒有在hazelcast(版本3.4)節點上執行代碼片段的方法?在節點啓動時創建並填充Hazelcast地圖

這個想法是:一旦hazelcast節點開始創建映射(不等待在客戶端執行.getMap)並且從數據庫中彈出數據,以便當客戶端請求數據時,map已經被填充。

回答

0

這可以通過在hazelcast.xml定義自定義的服務來解決。在節點啓動時調用服務構造函數,並從那裏請求和填充hazelcast地圖。 但是getMap的調用應該在新的線程中完成

1

是的。您需要爲您的IMap實施MapLoader,然後利用MapLoader.loadAllKeys()方法使用熱鍵初始化地圖。

這是個什麼文件說:

您可以使用MapLoader.loadAllKeys API預填充 內存映射時,地圖第一次接觸/使用。如果 MapLoader.loadAllKeys返回NULL,則不會加載任何內容。您的 MapLoader.loadAllKeys實現可以返回全部或部分 密鑰。例如,您可以選擇並僅返回熱鍵。 MapLoader.loadAllKeys是預填充地圖 的最快方式,因爲Hazelcast將通過讓每個節點加載其所擁有的條目部分來優化加載過程。

3.5 Map Persistence Documentation Link

+0

問題是loadAllKeys在調用getMap(「當第一次觸摸/使用地圖時」)時被調用。 我需要一些方法來在節點被注視之後調用它,以確保它在工作時間之外發生。 – ataurenis

+0

我建議在啓動節點啓動腳本時加入該步驟。 –