Java Ehcache分布式多通道

Java Ehcache分布式多通道,java,spring,caching,ehcache,Java,Spring,Caching,Ehcache,我正在DitDistributed模式下使用ehcache。 缓存按通道同步 <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" properties="channelName=CHANNEL1:connect=UDP(mcast_port=45568)" propertySeparato

我正在DitDistributed模式下使用ehcache。 缓存按通道同步

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

对于一个新的需求,我需要同步两个通道:通道1和通道2

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


提前感谢

通常使用cacheManagerPeerProviderFactory的一个实例跨集群复制(或同步)缓存数量。在这种情况下,
“channelName=CHANNEL1:”
更像是简单地给出一个名称。我认为ehCache不支持多个通道

如果您的需求是在一个通道中具有某些特定于复制的功能,则可以尝试以下操作之一

  • 在同一应用程序中运行两个EhCache管理器,每个管理器的名称为EhCache.xml,一个用于特定的复制逻辑,另一个用于缓存的公共复制逻辑
  • 您将只有一个缓存管理器,但您的ehcache.xml会有所不同,您不会将缓存(需要特定的复制逻辑)包含在第三个应用程序中
第一个是更干净的方法。 您可以通过以下方式使用Spring创建多个EHCacheManager

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


我需要保留CHANNEL1和CHANNEL2,因为如果您想要某个通道特定的复制,则必须仅对一个通道执行某些同步,然后当您说“我需要与两个通道同步:CHANNEL1和CHANNEL2”时,如何复制这两个通道,是指复制除某些缓存之外的所有通道?你能给出确切的用例吗。你可以做到这一点,保持一个通道的共同的事情,和其他两个(通道1和通道2)特定于他们!!!我在Websphere集群中部署了3个应用程序。A1、A2和A3。实际情况是,每个应用程序都有一个分布式EHcache,同步是通过Jgroup使用通道完成的。现在,我有了一个必须由3个应用程序共享的新缓存。因此,我只需要为单个应用程序保持现有缓存同步,而新缓存必须是跨应用程序同步的。我们如何做到这一点?我的问题是技术上如何做到这一点,我找不到任何方法来实现您在ehcache.xml文件中所说的内容。这不起作用,我实现了这一点,并将其作为一条消息:WARN UDP User:Ip:-JGRP000012:来自不同集群通道3的丢弃消息(我们的集群是通道1)。发件人是xxxxxx