是mqtt支持一对多和多对一?

时间:2015-09-12 15:44:18

标签: mqtt

最近我读过一篇文章 http://www.eclipse.org/community/eclipse_newsletter/2014/february/article2.php 在这里他说,通过mqtt协议,客户端可以在一对多和多对一的方式进行通信。在mqtt规范本身提到了一对多,但我对多对一的混淆不多。我的理解是,许多客户都在同一主题上发布,这些不同的发布者只有一个订阅者。那么订阅者(用户)应该如何识别消息属于哪个发布者?        另一个疑问是,如果两个发布者使用相同的主题来发布他们的数据而不相互了解,因为每个客户端都连接到互联网,订户将获得这两个数据。但这不是订阅者所期望的。他只想要一个发布者的数据。是否有机会在mqtt通信中出现相同的情况?

1 个答案:

答案 0 :(得分:8)

以下是有关MQTT的一些事实,可能有助于您理解。

  1. 发布商不“拥有”某个主题。出版商可以选择 向任何主题发布消息(假设它是有效的MQTT主题)。

  2. 鉴于上述第1点,任何数量的发布者都可以同时进行 发布到同一主题。

  3. 客户可以选择订阅 用于接收发布信息的特定或通配主题 任何出版商。
  4. 客户可以是发布者和订阅者 (甚至有可能客户收到自己发布的内容 消息)。
  5. MQTT Broker负责管理所有人 客户之间的关系。客户点不知道(或关心)哪个 其他客户当前连接到经纪人。出版商和 订阅者虽然可以沟通,但他们完全脱钩了 使用MQTT功能(pub / sub)。
  6. 有可能是一个 发布者的消息被丢弃,因为没有订阅者 目前对该消息感兴趣。 (例如:出版商发布到 主题“topic1”。如果之前没有订户请求过 订阅“topic1”时,MQTT将丢弃该消息 经纪人因为没有客户将其发送给。)。
  7. 单个发布商 可以一次发布到多个客户端。 (例如:10个客户来 在线并请求订阅主题“topic1”。另一个客户 上线并发布到“topic1”。全部10个订阅者 “topic1”将收到该消息。发布者只需向MQTT代理发布一条消息,MQTT代理负责将消息中继给所有10个订阅者。
  8. 希望这些信息可以帮助您理解,如果我还不清楚,请告诉我。