У нас есть высокопроизводительное промежуточное программное обеспечение на Java (J2SE), где задержка имеет первостепенное значение.Он использует некоторые постоянные данные, хранящиеся в устаревшей базе данных, где устаревшее приложение может случайно изменить данные.Из-за требований к задержке мы планируем кэшировать постоянные данные, используя JPA с Hibernate и, возможно, провайдер кеша, такой как Ehcache.
Однако когда обновляются постоянные данные (с помощью устаревшего приложения), мы должны быть уведомлены об этом как можно скорее.Я думал об установлении срока действия в кеше, но тогда кэш не будет обновляться до тех пор, пока приложение не выполнит следующий запрос данных - в этот момент будет произведена задержка из-за повторного чтения базы данных.
В идеале нам нужен кэш для возврата устаревшего значения, и в фоновом режиме кэш обновляется / обновляется с использованием новейшего значения из базы данных через регулярные интервалы.
Возможно ли это с Ehcache?Я видел SelfPopulationCache и CacheLoader, но похоже, что я делаю много работы (мне пришлось бы писать код вручную для каждой сущности).Также у кого-нибудь есть пример реализации CacheLoader?Я надеялся на возможность асинхронного обновления в Query Cache.
Существуют ли какие-либо другие технологии, которые могли бы предоставить решение?Мы не связаны провайдером JPA или провайдером кэша.
Может ли Spring @Cacheable предоставить решение?Я видел, что spring ehcache cachable упоминает самозаполняемый-cache-scope, но мне не ясно, что это значит.
Заранее спасибо.