2016-02-27 154 views
1

我正在尋找一種方法來註冊單個緩存的緩存事件與點燃。Apache點燃緩存事件的單個緩存(地圖)事件註冊

可以使用此代碼註冊點燃環境的所有放置事件;

 IgniteBiPredicate<UUID, CacheEvent> lsnr = new IgniteBiPredicate<UUID, CacheEvent>() { 
       @Override public boolean apply(UUID uuid, CacheEvent evt) { 
        System.out.println("Received event [evt=" + evt.name() + ", key=" + evt.key() + 
         ", oldVal=" + evt.oldValue() + ", newVal=" + evt.newValue()); 

        return true; // Continue listening. 
       } 
      }; 
    ignite.events().localListen(lsnr, EventType.EVT_CACHE_OBJECT_PUT); 

但我想只註冊特定地圖(緩存)的緩存事件,因爲性能的原因。否則,我將不得不爲每個事件檢查緩存名稱,這可能會導致大量事務處理系統的巨大負載。

感謝您的任何幫助和指導。

回答

1

如果你要聽的數據更新,連續查詢是更好的選擇:https://apacheignite.readme.io/docs/continuous-queries

此功能適用於每個高速緩存級別,支持正確的事件排序和在拓撲結構變化的情況下,保證交貨。

+0

感謝您的提示。如果我說,我只想聽本地更新,可以連續查詢。 –

+0

也可以通過連續查詢方式捕獲移除事件。謝謝 –

+0

要只聽本地事件,使用'ContinuousQuery.setLocal(true)'標誌。 –