Как получить старый кеш с помощью EhCache? - PullRequest
0 голосов
/ 29 октября 2018

У меня есть такой простой случай: в моем классе BCService я вызываю BCRepository.

@Component
public class BCService implements BCServiceApi {
    public static final String CACHE_KEY = "name";

    @Autowired
    private BCRepository repository;

    @Cacheable(value = "header", key = "#root.target.CACHE_KEY")
    public String getHeader() {
        return repository.getHeader();
    }
}

В моем классе BCRepository я вызываю конечную точку, которая возвращает строку из внешнего сервиса.

ResponseEntity<String> response = restTemplate.exchange(url,HttpMethod.GET, new HttpEntity<>(headers), String.class);
return Objects.requireNonNull(response.getBody());

Я кеширую метод BCService, чтобы больше не делать этого. В моем файле ehcache.xml timeToIdleSeconds установлен на 60 секунд. Через 60 секунд я снова вызываю внешнюю службу для поиска изменений и их кеширования.

<cache name="header"
       maxEntriesLocalHeap="10000"
       maxEntriesLocalDisk="1000"
       eternal="false"
       diskSpoolBufferSizeMB="20"
       timeToIdleSeconds="60" timeToLiveSeconds="600"
       memoryStoreEvictionPolicy="LFU"
       transactionalMode="off">
    <persistence strategy="localTempSwap" />
</cache> 

У меня вопрос, как я могу заставить BCService.getHeader () по-прежнему возвращать последнюю кэшированную строку , если внешняя служба внезапно недоступна?

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