HazelCast - истечение срока ожидания слушателя - PullRequest
0 голосов
/ 05 ноября 2018

Проблема в том, что прослушиватель карты вызывается через 3-5 секунд после истечения TTL.

Здесь я добавляю новую запись на карту

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  :::::::::::::::::::

Я пытался установить свойства конфигурации:

 hazelcast.internal.map.expiration.cleanup.percentage=100,
 hazelcast.internal.map.expiration.task.period.seconds=1,

Кто-нибудь имеет опыт и решает эту проблему?

1 Ответ

0 голосов
/ 05 ноября 2018

Срок действия в Hazelcast работает двумя способами:

  1. Запись недействительна после продолжительности TTL / max-idle-секунд. Когда вы попытаетесь получить запись после TTL / max-idle-секунд, вы получите значение null.
  2. Фоновый процесс (называемый заданием срока действия) работает и очищает просроченные записи. Эта задача может быть оптимизирована с помощью свойств, которые вы упомянули.

После истечения срока действия, EntryEvent будет запущен, если будут добавлены какие-либо слушатели. Тем не менее, это не гарантирует, что вы получите это событие как точное время его запуска. Система обработки событий в Hazelcast работает асинхронно и основана на fire-on-Forgot. Событие может подождать некоторое время в очереди событий. Таким образом, нормально видеть разницу во времени между вашим значением TTL и срабатыванием события.

...