订阅集群 WSO2 MB

Subscribing to clustered WSO2 MB

根据此页面,Shared Topic Subscription in WSO2,将按循环顺序向共享客户端 ID 的订阅者发送消息。本文仅显示单个 MB 实例。我想知道当您有一个 MB 实例集群时如何管理交付,其中有多个订阅者在集群中共享一个客户端 ID。 MB 是否能够跨所有节点进行循环交付?

WSO2 消息代理是分布式代理。它具有基于插槽的交付模型 [1]。槽创建和槽分配发生在集群中的协调器节点中。每个节点都有 slot delivery worker 运行 将消息传递给节点的本地订阅。

因此,当集群中有多个订阅共享相同的订阅 ID 时,特定节点的本地订阅将按循环顺序获取消息。

由于插槽架构,它保证两个订阅中的 none 会收到相同的消息。因为插槽包含特定范围的消息 ID 集。

示例:假设有两个节点集群,其中 node1 和 node2。假设 node1 是协调节点。有主题调用 topic1。 Publisher1 向 node1 中的 topic1 发送 1000 条消息,每个节点中有两个订阅者调用 subcriber1,node1 的 subscriber2 和 subscriber3,node2 的 subscriber4。协调器节点将在消息发布时创建槽,并按需分发给订阅者 运行 节点。这是通过节俭沟通发生的。因此,node1 和 node2 中的所有本地订阅者都将获得消息循环顺序。

希望您能理解高级架构。

[1] 更多详情 - https://docs.wso2.com/display/MB300/Architecture