是否可以在多个使用者之间分发MQTT主题的读取?

时间:2015-01-08 22:38:42

标签: mqtt

使用MQTT代理,是否可以为某个主题设置多个使用者,以便对于该主题上的任何给定消息,只有一个消费者会收到该消息?

4 个答案:

答案 0 :(得分:5)

简短的回答是否定的,不是任何纯粹实现MQTT规范的经纪人。

我认为可以编写一个使用MQTT与客户端通信的代理,并且只向单个订户传递消息。 (它必须与QOS2一起交付,以确保消费每条消息)

巧合的是,我在本周早些时候与一位同事谈论了类似于此类事情的事情,他找到了一种方法,使用IBM * MQ Light和称为“共享目的地”的方式来做这件事。 (MQ Light使用AMPQ而非MQTT)

https://developer.ibm.com/messaging/mq-light/

  • 完全披露,我在IBM工作

<强>更新

我被告知IBM MessageSight v1.2设备实际上可以使用MQTT(http://www-03.ibm.com/software/products/en/messagesight

实现共享目的地

更新2:

共享订阅是MQTT v5规范的可选部分,因此值得检查任何v5代理选项。

答案 1 :(得分:4)

答案 2 :(得分:1)

这是不可能的。在MQTT中,特定主题的所有订阅者都接收发布到所述主题的消息。为了将消息定向到特定订户,发布者和订阅者都必须使用与其他订阅者使用的主题不同的特定主题。

答案 3 :(得分:1)

独立于您正在使用的代理,您可以使用 Apache Camel 来实现将所有消息从主题A 复制到主题B的路由

或仅复制匹配特定规则的特定邮件,例如用户,内容模式,QoS。

其他解决方案是使用多协议代理,例如 ActiveMQ ,并将特定消息主题复制到队列(队列只能有一个消费者)并使用队列另一种协议,例如 JMS STOMP