【问题标题】:Time Based Eviction in HazelcastHazelcast 中基于时间的驱逐
【发布时间】:2017-11-15 00:20:18
【问题描述】:

我正在处理一个要求,即我将在一个集群中运行 N 个 hazelcast 实例,并且在所有这些实例上运行 kafka 消费者。

现在的问题是,进入 kafka 的每条消息都应该添加到分布式映射中,并且必须每 20 秒驱逐一次条目,我通过使用生存时间和最大空闲秒数参数来做到这一点在地图配置中。

但我真正想要的是,当条目被驱逐时,只有一个节点应该处理它,现在,条目驱逐被通知给所有节点。

如果需要更多信息,请告诉我。

【问题讨论】:

  • 已发生驱逐的通知可以配置为全局或本地。全局意味着通知所有节点。本地表示只通知发生驱逐的节点
  • 那太好了!能否请您参考文档中提到的位置,我很难找到它..
  • 好的,我想我明白了,文档中没有提到它,它似乎更多地与听众而不是驱逐者有关。基本上,您必须将 localEntryListener 添加到您的分布式地图中,以便成员只会收到它是所有者的通知。

标签: hazelcast


【解决方案1】:

您必须将 localEntryListener 添加到您的分布式地图中,以便成员只会收到它是所有者的通知。

例如

if(map != null){
            map.addLocalEntryListener(new EntryAddedListener<Long, Long>() {
                @Override
                public void entryAdded(EntryEvent<Long, Long> event) {
                    log.info("LOCAL ENTRY ADDED : {} at {}", event, System.currentTimeMillis());
                }
            });

上面的例子是EntryAddedListener,你也可以类似地实现一个EntryEvictedListener。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多