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