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

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

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

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

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

Hazelcast文件中有以下内容:

还有另一个名为local的属性,未在中显示 上面的例子。它也是可选的布尔属性, 如果将其设置为true,则可以在本地 成员。其默认值为false

“local”属性是否意味着事件将仅在作为密钥主要所有者的节点上触发

谢谢,
Troy

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

谢谢。我已经设法使用IMap.addLocalEntryListener进行了测试,并确认侦听器只在集群的一个成员上被调用。但是,现在我需要将其扩展到lite成员。实际上,数据存储在我称之为守护进程的节点集群中,但数据的实际处理是在连接到守护进程的微服务中进行的。我计划使用一个本地入口侦听器将事件推送到IQueue上,以便微服务拾取并进行实际处理。