本文介紹了Hazelcast-過期監(jiān)聽程序延遲的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
問題是MAP偵聽器在TTL到期后引發(fā)了3-5秒。
我在此處添加要映射的新條目
05-11-2018 14:38:57.197 INFO [hz._hzInstance_1_3cc39d15-29b8-4f59-8bca-e47eae0476a1.event-26] MyEntryExpiredListener - :::::::::::entry was ADDED to the map :::::::::::::::::::
TTL配置為10秒,但大約14秒后返回。
05-11-2018 14:39:11.326 INFO [hz._hzInstance_1_3cc39d15-29b8-4f59-8bca-e47eae0476a1.event-26] MyEntryExpiredListener - :::::::::::entry was EXPIRED in the map :::::::::::::::::::
我嘗試設(shè)置配置屬性:
hazelcast.internal.map.expiration.cleanup.percentage=100,
hazelcast.internal.map.expiration.task.period.seconds=1,
有誰有經(jīng)驗(yàn)解決這個(gè)問題嗎?
推薦答案
Hazelcast中的過期有兩種工作方式:
-
該條目在TTL/max-IDLE-秒持續(xù)時(shí)間之后無效。當(dāng)您嘗試在TTL/max-IDLE-秒之后獲取條目時(shí),您將獲得
null
值。后臺(tái)進(jìn)程(稱為過期任務(wù))工作并清理過期條目。此任務(wù)可以使用您提到的屬性進(jìn)行優(yōu)化。
過期后,如果添加了監(jiān)聽器,則會(huì)觸發(fā)EntryEvent
。但是,這并不能保證您將收到與事件觸發(fā)時(shí)相同的確切時(shí)間。Hazelcast中的事件系統(tǒng)以異步方式工作,基于忘記即點(diǎn)火。該事件可能會(huì)在事件隊(duì)列中等待一段時(shí)間。因此,看到TTL值和事件觸發(fā)之間的時(shí)間差是正常的。
這篇關(guān)于Hazelcast-過期監(jiān)聽程序延遲的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,