我希望我的应用程序即使在运行时缓存关闭时也能继续工作。
因此,首先,我重写了默认的缓存处理程序:
@Configuration
public class CachingConf extends CachingConfigurerSupport {
@Override
public CacheErrorHandler errorHandler() {
return new CustomRedisErrorHandler(); //it just logs error in presence of errors
}
}
这样,当缓存中断时,将调用基础服务,并且一切都会继续工作。
无论如何,这还不够:框架仍然尝试n秒与远程缓存服务器联系,因此我想添加一个电路中断。一旦缓存出现故障,我将绕过缓存n秒钟。
为此,我需要拦截所有缓存操作(获取/放置),并使用resilience4j装饰它们。 这可能吗?我似乎找不到任何方法!
有了缓存配置器支持,我可以使用自己的缓存管理器,但是我不知道在运行时将拥有哪种缓存。