【问题标题】:Hazelcast: Execute EntryEvictedListener only once per cluster in client modeHazelcast:在客户端模式下,每个集群仅执行一次 EntryEvictedListener
【发布时间】:2018-05-07 12:42:44
【问题描述】:

我们正在使用 多个 节点的 Java 客户端连接到 Hazelcast 集群。

HazelcastClient.newHazelcastClient(cfg)

我们需要每个集群只执行一次 EntryEvictedListener。 默认情况下,它在所有连接的客户端上执行。

找到了如何通过嵌入 Hazelcast (Time Based Eviction in Hazelcast) 实现这一目标,但看起来像

map.addLocalEntryListener(...) 

不允许客户端使用。

那么有没有办法使用客户端在每个集群中只执行一次驱逐监听器?

【问题讨论】:

    标签: java hazelcast


    【解决方案1】:

    很遗憾没有。您的侦听器需要在集群节点上运行,因为 local 直接连接到底层分区方案。你想对 evict 事件做什么,也许你可以用不同的方式实现它。

    【讨论】:

    • 谢谢。 IMap TTL 事件对于限制一些聚合窗口时间非常有用 - 假设出现错误消息,它存储在带有 counter=1 的映射中,以后每个类似的消息都会更新该映射中的计数器,并且在 TTL 事件上我们决定是否生成警报基于计数器。当然,我们可以使用不同的方法,但每种方法都有缺点: 1. 有一些后台集群范围的调度程序 - 但它会窥探 CPU 使用率、更多代码和更多极端情况 2. 存储每条消息并检查错误到达时的计数器- 这里计算过于频繁
    • 3.我们使用客户端而不是嵌入式 Hazelcast,因为我们希望将数据和处理节点的生命周期分开
    • 抱歉,不确定,之前的留言中还有其他问题吗?
    • 坦率地说 - 不确定,只是解释我们为什么使用驱逐监听器,但如果有人有更好的想法如何避免使用它 - 真的很感激......
    • 为什么你不能在你的 hazelcast 配置中本地注册一个监听器?
    猜你喜欢
    • 2018-05-14
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    相关资源
    最近更新 更多