Hazelcast - 确保条目事件由单个处理程序处理

问题描述 投票:0回答:2

我有一个具有多个节点的 Hazelcast 集群,每个节点都由“Daemon”服务器进程的相同实例组成。这些守护进程是带有嵌入式 Hazelcast 缓存的 Java 应用程序以及构成我的平台核心的逻辑。我需要将平台上的某些事件分发给集群中的侦听器,这些侦听器可以驻留在任何(或所有)连接的节点中。根据我对文档的阅读,在我看来,如果我在守护进程启动时将 EntryEventListener 附加到映射,那么每当该映射中发生事件时,我的回调将在守护进程的每个运行实例中被调用。

我想要的是在整个集群中为事件调用一次回调(在任何单个节点上)。因此,如果集群中有 10 个节点,并且每个节点在加入时在地图上注册一个 EntryEventListener,我希望在该事件发生时触发这些侦听器实例(在任何节点上)中的任何一个,而不是全部他们...我不关心哪个节点侦听器处理该事件,只要它只是侦听器的单个实例而不是每个注册的侦听器即可。我该怎么做?

我看到了这个老问题,听起来像是同一个问题,但我不确定,而且答案对我来说没有意义。 多节点集群上的 hazelcast 条目侦听器

在 Hazelcast 文档中有这样的内容:

还有一个属性叫local,在图中没有显示 上面的例子。它也是一个可选的布尔属性, 如果设置为true,则可以收听本地的项目 成员。它的默认值为 false。

“本地”属性是否意味着该事件只会在作为密钥的主要所有者的节点上触发?

谢谢, 特洛伊

hazelcast
2个回答
1
投票

是的,将

local
设置为 true 将使侦听器仅在成员是密钥的主要所有者时才触发事件。您可以使用本地侦听器来实现您想要的


0
投票

“ IMap.addLocalEntryListener ”为我工作。在我的例子中,有 2 个实例正在运行,每个实例的侦听器都触发单个事件的事件处理。因此,重复的事件被触发,而不是集群中的单个事件。理想情况下,只有一个侦听器集群应该触发触发器事件。

© www.soinside.com 2019 - 2024. All rights reserved.