0

我在两台服务器上使用带有兵马俑的分布式 ehcache。在我的缓存管理器中,我有多个缓存。但是现在我有一个要求,每当将一个元素添加到 1 个服务器上的 1 个特定缓存中时,我都希望收到有关该放置在第二个服务器上的通知。我尝试使用 CacheEventListener 但它在本地工作。你能帮我弄清楚我能做什么。我可以将复制机制与 terracotta 一起使用来解决这个问题吗,因为通过在 1 个缓存上使用复制,我将在其他服务器上获取该元素,而对于所有其他缓存,我可以使用 terracotta。请帮助它是非常紧急的。提前致谢

4

1 回答 1

0

CacheEventListener 只能在本地工作,但您可以通过 Terracotta 将其配置为在集群上工作,也可以使用 listenFor 属性。它可以采用以下值:

  • all - 默认是传递所有本地和远程事件
  • local - 仅传递源自当前节点的事件
  • 远程 - 仅传递源自其他节点的事件

检查http://ehcache.org/documentation/apis/cache-event-listeners上的文档

希望这可以帮助!

更新:事实证明,您需要另一个 CacheEventListener 来使事件分布在集群上。您的配置将类似于以下内容:

<cache name="myCache"
       ...
       <cacheEventListenerFactory class="net.sf.ehcache.event.TerracottaCacheEventReplicationFactory" properties="" listenFor="all"/>
       <cacheEventListenerFactory class="foo.bar.MyListenerFactory" properties="" listenFor="all"/>
       <terracotta/>
</cache>
于 2012-12-28T10:52:36.117 回答