1

我有一个成员,它有一个读取/写入数据库的 MapStore/Loader 以及一个添加 EntryAddedListener 侦听器的客户端。

如果该成员被退回,我会看到条目添加的侦听器被触发,因为 MapLoader 从数据库重新加载数据。

然而,这向客户端表明已经添加了新条目,而实际上,它们只是因为节点引导而被“添加”。

基本上我不希望这些侦听器因 MapLoader 引导地图而被触发——它们应该只在之后被触发。

如何阻止这些 MapLoader 事件触发 EntryAdded 侦听器?

4

2 回答 2

2

没有办法做到这一点。使用 MapLoader 加载条目基本上就是在地图中添加一个条目。

您可以做的是在加载地图后添加这些侦听器。如果您的 loadingMode 设置为 EAGER,则很容易确定加载何时完全完成。

为了等到加载完成,您可以调用 map.size() 操作。完成后,地图已完全填充。

于 2016-08-19T17:15:31.423 回答
1

从 Hazelcast v3.11开始可以区分 ADD 和 LOAD 事件。此功能已作为hazelcast-13181问题的一部分引入。

此外,您可能需要查看 Java 文档的EntryAddedListenerEntryLoadedListener以了解更多详细信息。

于 2019-02-13T13:36:40.223 回答