2015-11-02 66 views
1

Spring高速缓存配置允许使用CompositeCacheManagerfallbackToNoOpCache属性设置为true来回退至无高速缓存。这怎么可能与spring-cloud-aws缓存管理器一起使用,以便在指定不存在的缓存集群时,复合缓存管理器会退回到没有缓存?用一个例子的配置是这样的:Spring Cloud AWS:可选高速缓存管理器

<aws-cache:cache-manager> 
    <aws-cache:cache-cluster name="CacheCluster" /> 
</aws-cache:cache-manager> 

的应用程序时,有没有名为CacheCluster集群配置只是将无法启动。当CompositeCacheManager配置是这样的:

<aws-cache:cache-manager id="elasticacheManager"> 
    <aws-cache:cache-cluster name="CacheCluster" /> 
</aws-cache:cache-manager> 

<bean id="cacheManager" class="org.springframework.cache.support.CompositeCacheManager"> 
    <property name="cacheManagers"> 
     <list> 
      <ref bean="elasticacheManager" /> 
     </list> 
    </property> 
    <property name="fallbackToNoOpCache" value="true"/> 
</bean> 

与非现有的缓存CacheCluster,那么应用程序无法启动抱怨:“没有名为‘elasticacheManager’豆的定义”。 有没有办法以编程方式创建AWS高速缓存管理器,并使用类似FactoryBean的东西来实现这一点?

回答

0

当前Spring Cloud AWS不支持配置的后备缓存。我将把它作为功能请求添加到我们的待办事项中。同时,您可以使用我在参考应用中使用的相同解决方法(使用弹簧配置文件)(请参阅ReferenceApplication.java)。

+0

我检查了CacheBeanDefinitionParser的实现,发现它创建了一个SimpleCacheManager,并且它不容易挂钩到工厂。即使可以使用类似BeanFactoryPostProcessor的方法来检查缓存集群的可用性并删除不可用的缓存,但实施此操作的开销要比使用不同的解决方案要高,目前没有使用Spring云。 不幸的是,配置文件的技巧在我的情况下不起作用:实际上,它旨在用于生产环境中,以在缓存集群不可用时提供故障安全行为。 – kobasad