Я хочу, чтобы мое приложение продолжало работать, даже если кэш отключился во время выполнения.
Итак, во-первых, я переопределил обработчик кэша по умолчанию:
@Configuration
public class CachingConf extends CachingConfigurerSupport {
@Override
public CacheErrorHandler errorHandler() {
return new CustomRedisErrorHandler(); //it just logs error in presence of errors
}
}
Таким образом, когда кэш выходит из строя, вызывается базовый сервис и все продолжает работать.
В любом случае этого недостаточно: фреймворк все еще пытается в течение n секунд связаться с удаленным сервером кеша, поэтому я хотел бы добавить разрыв цепи. Когда кэш отключается, я просто обхожу его на n секунд.
Для этого мне нужно перехватить все операции с кешем (получить / поставить) и украсить их с помощью resilience4j. Это возможно? Кажется, я не могу найти какой-либо способ сделать это!
С поддержкой конфигуратора кэширования я мог бы использовать свой собственный менеджер кэша, однако я не знаю во время выполнения, какой тип кэша у меня будет.