Введение
Это касается кеша infinispan, но я думаю, что это достаточно общий вопрос.
В моем кеше infinispan я ввожу элементы в кеш с помощью метода putIfAbsent и удаляю их с помощью метода удаления. (документ jboss здесь)
Основное поведение
Я могу помещать элементы в свой кеш и удалять элементы из кеша, используя идентификатор. Но если я не удалю элемент кеша явно, infinispan удалит его автоматически по истечении указанного срока жизни.
В моем методе удаления я запускаю некоторый пользовательский код перед удалением. Но когда я не вызываю метод удаления, infinispan удаляет запись из кеша из-за истечения предоставленного срока службы.
В этом сценарии автоматического удаления я не могу запустить свой собственный код, потому что это происходит под капотом. (от Infinispan). Итак, каков возможный путь? Следующий код, надеюсь, объяснит это немного подробнее.
Я верю, что я достаточно ясен. Пожалуйста, дайте мне некоторое представление. Спасибо.
void putToCache(String id){
myCache.putIfAbsent(id,value,LIFESPAN_DURATION,timeUnit);
}
void removeFromCache(String id){
//MY CUSTOM CODE - WANT TO RUN THIS IN LIFE SPAN DURATION EXPIRY ALSO
myCache.remove(id);
}