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

use*_*743 5 mqtt

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

小智 8

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

  1. 发布者不"拥有"某个主题.发布者可以选择将消息发布到任何主题(假设它是有效的MQTT主题).

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

  3. 客户可以选择订阅特定或通配主题以接收从任何发布者发布的信息.
  4. 客户端既可以是发布者也可以是订阅者(客户端甚至可以接收其自己发布的消息).
  5. MQTT Broker负责管理客户端之间的所有关系.客户点不知道(或关心)其他客户当前连接到代理.虽然发布者和订阅者可以使用MQTT功能(pub/sub)进行通信,但他们完全脱钩.
  6. 发布者的消息可能被丢弃,因为目前没有订阅者对该消息感兴趣.(例如:发布者发布到主题"topic1".如果之前没有订阅者请求订阅"topic1",则MQTT代理将丢弃该消息,因为它没有客户端将其发送到).
  7. 单个发布者可以一次发布到多个客户端.(例如:10个客户端上线并请求订阅主题"topic1".另一个客户端上线并发布到"topic1"."topic1"的所有10个订阅者都将收到该消息.发布者只需要发布一条消息给MQTT代理,MQTT代理负责将消息中继到所有10个订户.

希望这些信息可以帮助您理解,如果我还不清楚,请告诉我.