2015-11-02 72 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