【问题标题】:Can we use ehcache replication and terracotta together?我们可以同时使用 ehcache 复制和 terracotta 吗?
【发布时间】:2012-12-26 08:18:33
【问题描述】:

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

【问题讨论】:

    标签: ehcache terracotta


    【解决方案1】:

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

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

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

    【讨论】:

    • 您能告诉我如何配置它以在集群上使用吗?就像我使用自己的 cacheEventListener 一样,它不会将事件复制到集群中的其他节点。
    • 你是如何配置你的 CacheEventListener 的?类似的东西应该可以工作: ...
    • 是的,我以同样的方式配置它。但它不会在另一个实例上复制事件。
    • 看来你是对的。我做了一些进一步的研究,看起来你还必须添加另一个 CacheEventListenerFactory:。我会更新回复。
    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多