2016-03-03 4 views
0

Я пытаюсь установить прослушиватель для CacheEntryExpired в Infinispan. Я создал тестовый прослушиватель, который просто регистрирует истечение срока действия и ключ.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-

Смежные вопросы