Ehcache分布式多通道

Ehcache Distributed Multiple channel

我在分布式模式下使用 ehcache。 缓存由 channel 同步。

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

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

这可能吗?如果是,我该怎么做?

提前致谢

通常 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>