2016-03-03 141 views
0

我想爲Infinispan中的CacheEntryExpired設置偵聽器。我創建了一個只記錄過期和密鑰的測試監聽器。Infinispan CacheEntryExpired偵聽器

文檔(https://docs.jboss.org/infinispan/8.0/apidocs/org/infinispan/notifications/cachelistener/annotation/CacheEntryExpired.html)沒有這樣說,但看起來,這個事件是在未知的未來調用的,但不一定在它過期後調用。有時在實際到期後幾分鐘,有時在試圖獲得與該密鑰一起提供的值之後。

有什麼方法可以配置緩存來加速這個事件嗎?我不一定需要它,但10分鐘後,或從不真的可以接受。

問候

回答

2

當條目過期和之間的最大時間,當它被通知由呼氣回收線程的頻率來控制。到期收割者線程將檢查存儲器中的所有條目是否到期,並檢查存儲器中的所有條目是否已過期。這就是爲什麼你在鏈接Javadoc時會談論如果收割者線程發現它可能立即到期。

設置收斂頻率的配置可以通過調用[1]進行配置。默認值是每分鐘並被啓用。因此,默認情況下,條目應在一分鐘左右內通知到期。我這樣說是因爲它仍然必須先在緩存上迭代,才能找到過期的條目。

如果用戶在該密鑰過期時嘗試訪問該密鑰,則可能會提前發生到期通知。請注意,可以禁用收割者,這樣做將成爲獲取過期條目通知的唯一方法。

[1] https://docs.jboss.org/infinispan/8.2/apidocs/org/infinispan/configuration/cache/ExpirationConfigurationBuilder.html#wakeUpInterval-long-java.util.concurrent.TimeUnit-