除了标准 MQTT 协议所支持的发布/订阅(Pub/Sub)消息收发模式外微消息队列 MQTT 还支持点对点(Point to Point,简称 P2P)模式本文介绍 P2P 模式的概念、原理以及如何使用微消息队列 MQTT 点对点收发消息。
P2P顾名思义,是一对一的消息收发模式即只有一个消息发送者和一个消息接收者。而 Pub/Sub 模式通常用于一对多或多对多的消息群发场景即擁有一个或多个消息发送者和多个消息接收者的场景。
在 P2P 模式中发送者发送消息时已经明确该消息预期的接收者信息,并明确该消息只需要被特定的单个客户端消费发送者发送消息时通过 Topic 信息直接指定接收者,接收者无需提前订阅即可获取该消息
P2P 模式不仅可以为接收鍺节省注册订阅关系的成本,此外由于收发消息的链路有单独的优化,还可以降低推送延迟
在微消息队列 MQTT 中使用 P2P 模式收发消息与使用 Pub/Sub 嘚普通模式收发消息的区别如下所述:
- 发送消息时,Pub/Sub 模式下发送者需要按照和接收者约定好的 Topic 发送消息;而 P2P 模式下,发送者无需事先约萣传输消息的 Topic发送者可以直接按照规范发送消息到目标的接收者。
- 接收消息时Pub/Sub 模式下,接收者需要按照和发送者约定好的 Topic 提前订阅才能收到消息;而 P2P 模式下接收者无需事先订阅即可接收消息从而简化接收者的程序逻辑,节省订阅成本
使用消息队列 MQ 的 SDK 发送 P2P 消息时,由於一级 Topic 和子级 Topic 是分开设置的因此只需要将子级 Topic 属性设置成上述的子级 Topic 字符串。
提供了发送 P2P 消息的多语言代码示例的链接
接收消息的客戶端无需任何订阅处理,只需要完成客户端的初始化即可收到 P2P 消息