Hazelcast 对Vert.x服务进行集群时,集群EventBus处理程序是否会传播到新加入的节点?
这是我在官方文件或其他任何地方都找不到的东西;我提议的情况基本上是这样的:Hazelcast 对Vert.x服务进行集群时,集群EventBus处理程序是否会传播到新加入的节点?,hazelcast,vert.x,Hazelcast,Vert.x,这是我在官方文件或其他任何地方都找不到的东西;我提议的情况基本上是这样的: 我有一个相同服务、相同代码库的NVert.x实例集群 在某个时间点,我注册了一个EventBus消费者C,地址为A集群范围。我订阅了一个完成处理程序,以便在集群的所有节点上完成注册时收到通知 一切正常,但现在我向集群添加了一个新节点 我的问题实际上有两个方面: C消费者是否会传播到新加入者?也就是说,如果我从新的joiner执行eventBus().publish(a,…),处理程序会被执行吗 是否会再次调用完成处
- 我有一个相同服务、相同代码库的
Vert.x实例集群N
- 在某个时间点,我注册了一个EventBus消费者
,地址为C
集群范围。我订阅了一个完成处理程序,以便在集群的所有节点上完成注册时收到通知A
- 一切正常,但现在我向集群添加了一个新节点
消费者是否会传播到新加入者?也就是说,如果我从新的joiner执行C
,处理程序会被执行吗eventBus().publish(a,…)
- 是否会再次调用完成处理程序(我猜是否,只是以防万一)
A
集群范围注册一个EventBus使用者
新节点将知道以前在集群上创建的所有注册。以前的节点将知道新的注册
当您从新加入者执行eventBus().publish(A,…)
时,包括它的所有节点都将调用为此地址注册的使用者
在新joiner上,当注册被持久化时,将调用完成处理程序。在新注册从其他节点可见之前可能会有(非常小的)延迟,因为该过程是异步的
以前节点上的完成处理程序将不再被调用(因为相应使用者的注册已经发生)。>谢谢,我认为这一行特别回答了我的问题。我的用例是,一旦多个物联网设备通过套接字连接到一个实例,就为它们创建一个消费者。每个使用者都有带有设备IMEI(
iot-$IMEI
)的自定义地址,因此我可以从群集中的任何位置向特定设备发送消息,我认为WriteHandlerId仍然不支持。因此,如果新节点自动知道群集中其他实例创建的每个注册之前,它应该能够通过向特定地址发送消息来与任何物联网设备通信(即使该物联网设备的套接字在另一个实例中打开),对吗?每个TCP连接注册的消费者都是本地消费者,因此您不能从任何节点发送消息,而只能从接收TCP连接的位置发送消息。在Vert.x4中,计划将其设置为可配置的。