Hazelcast地图监听器与重播

时间:2015-03-27 15:40:37

标签: hazelcast

我有多个节点参与Hazelcast群集。一个节点从外部系统接收事件并将对象放入IMap。我有其他节点需要地图中的所有条目以及任何新的条目。 (例如,这些辅助节点的一个用例是向用户呈现数据的实时视图。)

其中一种方法是:

map.addEntryListener(new MyListener());
for (Object value : map.values()) {
    ...
}

但是,我可能会看到同一个对象两次,如果在调用我的侦听器后添加了该对象,但在我的for循环之前添加了该对象。 (这不是理想的,但我可以使它工作)。我也可以在for循环之后放入addEntryListener(),然后我可能会错过条目。

理想情况下,我想要一个addEntryListenerWithReplay()方法。我在启动HazelcastInstance之前尝试设置EntryListenerConfig,认为提供了“添加侦听器重放”语义,但我的测试建议不然。

我能想到的唯一其他解决方案是使用分布式锁定,以确保我不会错过任何插入地图的项目。

非常感谢您的建议和见解,非常感谢Hazelcast团队。

0 个答案:

没有答案