如何在MQTT 5中以共享订阅定位特定工作人员?

时间:2019-05-14 10:28:19

标签: mqtt messaging

MQTT 5的新功能之一是共享订阅功能,该功能允许在多个工作程序之间进行客户端负载平衡,以便多个工作程序可以负责处理消息,但是每条消息都是仅发送到单个服务器。

默认情况下,这与循环方法一起使用,但是我需要稍微高级一些的方案:

我想要的是某种路由,以便将消息的属性之一用作某种路由键。即,我希望多名工作人员负责这些消息,但是所有在其路由键属性中值为X的消息都应始终发送给同一工作人员,而所有具有Y的消息也应负责。 XY的工作程序可能有所不同,但所有带有X的消息都应始终指向同一消息。

问题1:MQTT 5甚至可以做到吗?如果是这样,我需要寻找什么用语?我为此尝试了Google搜索,但并没有真正成功(主要是因为我不知道确切的查找内容)。

现在,假设这是可能的:那么我该如何处理节点加入或离开的情况?然后,我仍然只希望由一个节点负责,因此如果分配不是静态的,而是可以动态调整的(最好是自动调整自身),那就太好了。但是,我严格需要避免的是,两个带有X的消息同时发送到不同的服务器。

问题2:应该,这是不可能的-我有MQTT 5的哪些替代方案?

1 个答案:

答案 0 :(得分:-1)

您不在协议级别。这就是共享订阅的全部意义,以便在所有订阅者之间平均分配传入消息。

这也违反了pub / sub范式,即消息是发布到主题而不是单个订阅者的。

如果要以不同的方式路由消息,请将其发布到不同的主题。一旦有需要,客户端就可以根据您的消息的元数据在单独的主题上重新发布消息。