我有一个带有多个节点的Hazelcast群集,每个节点都由“守护程序”服务器进程的相同实例组成。这些守护程序是具有嵌入式Hazelcast缓存以及构成我平台核心的逻辑的Java应用程序。我需要将平台上的某些事件分发给整个群集中的侦听器,这些侦听器可以驻留在任何(或所有)连接的节点中。从我阅读的文档看来,如果我在守护程序启动时将EntryEventListener附加到地图上,则无论何时在该地图中发生事件,都会在守护程序的每个运行实例中调用我的回调。
我想要的是针对事件在整个集群中一次(在任何单个节点上)调用一次回调。因此,如果我在集群中有10个节点,并且每个节点在加入时在地图上注册一个EntryEventListener,我希望事件发生时触发这些侦听器实例中的任何一个(在任何节点上),而不是全部他们...我不在乎哪个节点侦听器处理事件,只要它只是侦听器的单个实例,而不是每个注册的侦听器。我该怎么办?
我看到了这个老问题,听起来像是同一个问题,但是我不确定,答案对我来说没有意义。 hazelcast entry listener on a multinode cluster
在Hazelcast文档中是这样的:
还有另一个名为local的属性,该属性未在 以上例子。它也是一个布尔属性,是可选的, 如果将其设置为true,则可以收听本地 会员。默认值为false。
“本地”属性是否意味着将仅在作为密钥主要所有者的节点上触发事件?
谢谢, 特洛伊
答案 0 :(得分:0)
是的,将local
设置为true会使侦听器仅在成员是密钥的主要所有者时才触发事件。您可以使用本地侦听器来实现所需的目标