Ehcache分布式多渠道

时间:2015-05-07 10:58:09

标签: java spring caching ehcache

我在ditributed模式下使用ehcache。 缓存通过通道同步。

<cacheManagerPeerProviderFactory
    class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
    properties="channelName=CHANNEL1:connect=UDP(mcast_port=45568)"
    propertySeparator=":" />

对于新要求,我需要与两个通道同步:CHANNEL1和CHANNEL2。

这可能吗?如果是的话,我怎么能这样做?

提前致谢

1 个答案:

答案 0 :(得分:1)

通常,一个cacheManagerPeerProviderFactory实例用于跨群集复制(或同步)多个缓存。在这种情况下,"channelName=CHANNEL1:"更像是给出一个名字。我不认为ehCache支持多个频道。

如果您要求具有某些特定于复制的通道,则可以尝试以下其中一种

  • 在同一个应用程序中运行两个EhCache Manager,每个管理器都带有ehcache.xml,一个用于特定的复制逻辑,另一个用于缓存的公共复制逻辑。
  • 您将只有一个缓存管理器,但您的ehcache.xml会有所不同,您不会在第三个应用程序中包含缓存(需要特定的复制逻辑)。

第一个是更清洁的方法。 您可以通过以下方式使用Spring创建多个EhcacheManagers,

<ehcache:annotation-driven cache-manager="ehCacheManager1" />

<bean id="ehCacheManager1" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="configLocation" value="classpath:ehcache-1.xml" />
</bean>

<bean id="ehCacheManager2" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="configLocation" value="classpath:ehcache-2.xml" />
</bean>