我想在运行时在缓存和非缓存模式之间切换。我知道这可以通过删除标签来实现。但这需要重建源代码/重新部署。如果我发现 infinispan 缓存出现异常错误(超时,或节点不可访问 - 我正在使用 infinispan hot rod),我需要切换到非缓存模式。
是否可以扩展 spring cacheinterceptor 并返回 null 值,以便应用程序从 DB 中获取值。基本上所有对 cacheinterceptor 的调用都应该被忽略。
感谢您分享信息,如果你们中的任何人做过类似的事情。
我认为这个问题至少有两种解决方案。首先,您可以创建自己的CacheInterceptor实现并将切换代码放在那里。然后您需要指示 Spring 使用您的自定义 CacheInterceptor。ProxyCachingConfiguration类可能是开始调查的好地方。
第二种解决方案是修改 Infinispan Spring 集成代码并在其中添加切换功能。为了实现这一点,您必须覆盖SpringRemoteCacheManagerFactoryBean、SpringRemoteCacheManager和SpringRemoteCache。我建议将切换代码放在 SpringRemoteCache#get 中。