Hazelcast - 确保入口事件由单个处理程序处理

Hazelcast - Ensure entry event is processed by a single handler

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

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

我看到这个老问题听起来像是同一个问题,但我不确定,答案对我来说没有意义。 hazelcast entry listener on a multinode cluster

在 The Hazelcast 文档中是这样的:

There is also another attribute called local, which is not shown in the above examples. It is also a boolean attribute that is optional, and if you set it to true, you can listen to the items on the local member. Its default value is false.

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

谢谢, 特洛伊

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