@Cacheable и refreshAfterWrite

В настоящее время я использую весеннюю загрузку кеша и кофеин с конфигом spring.cache.caffeine.spec=expireAfterWrite=2h,recordStats как только конфиг и такой метод:

@Cacheable(
        value = CacheConfig.PRODUCTS_CACHE_NAME
)
public List<ProductDetails> getProductsDetails(String language) {
    // long running remote request
    return products;
}

Для более гибкого поведения я хочу, чтобы кэш-память все еще обслуживала старое значение, когда удаленный сервис недоступен.

Но конфиг spring.cache.caffeine.spec=refreshAfterWrite=2h,recordStats приводит к исключению, говорящему refreshAfterWrite requires a LoadingCache,

Я знаю, что я мог бы реализовать CacheLoader боб сам. Но тогда я должен был бы вызвать кеш напрямую и потерял бы прозрачное поведение @Cachable.

Я ищу следующее поведение:

  1. Кэш MISS => загрузить значение и вернуть синхронно.

  2. Кеш HIT => обслуживать значение из кеша.

  3. HIT кэширования после порога обновления => синхронно обслуживать старое значение из кэша и обновлять значение в фоновом режиме.

  4. Бонус: кэшировать HIT после того, как текущее значение старше X => загрузить значение и вернуться синхронно.

Возможно ли такое поведение?

0 ответов

Другие вопросы по тегам