群集Vert.x服务时,群集的EventBus处理程序是否传播到新的加入节点?

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

这是我在官方文档中或其他任何地方都找不到的东西;我建议的情景基本上是这样的:

  • 我具有相同服务,相同代码库的N Vert.x实例的群集。
  • [在某个时间点,我在整个集群范围内的地址C中注册了一个EventBus使用者A。我订阅了一个完成处理程序,以便在集群的所有节点上完成注册时得到通知。
  • 一切正常,但是现在我向集群添加了一个新节点。

我的问题实际上有两个方面:

  • C使用者将被传播到新联接器吗?也就是说,如果我从新联接器中执行eventBus().publish(A, ...),该处理程序将被执行吗?
  • 将再次调用完成处理程序(我的猜测是,但以防万一)?
hazelcast vert.x
1个回答
0
投票

当您将新节点添加到群集时,该应用将在该节点上再次启动(如果正确理解了您所描述的情况)。>>

因此,在新节点上,将为集群范围内的地址A注册一个EventBus使用者。

新节点将知道先前在集群上创建的所有注册。先前的节点将知道新的注册。

当您从新联接器执行eventBus().publish(A, ...)时,包括它的所有节点都将调用为此地址注册的使用者。

在新加入者上,当持久保留注册时,将调用完成处理程序。由于该过程是异步的,因此在其他节点上看到新注册之前可能会有一个(非常小的)延迟。

先前节点上的完成处理程序将不会再次调用(因为已经发生了相应使用者的注册)。>>

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