C语言

2023年7月15日

MQTT的QoS介绍

1. MQTT中的QoS等级 MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service): QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议: 注意:QoS是Sender和Receiver之间的协议,而不是Publisher和Subscriber之间的协议。换句话说,Publisher发布了一条QoS1的消息,只能保证Broker能至少收到一次这个消息;而对于Subscriber能否至少收到一次这个消息,还要取决于Subscriber在Subscibe的时候和Broker协商的QoS等级。 1.1. QoS0 QoS0等级下,Sender和Receiver之间一次消息的传递流程如下: Sender向Receiver发送一个包含消息数据的PUBLISH包,然后不管结果如何,丢掉已发送的PUBLISH包,一条消息的发送完成。 1.2. QoS1 QoS1要保证消息至少到达一次,所以有一个应答的机制。Sender和Receiver的一次消息的传递流程如下: 但是消息传递流程中可能会出现问题:...

Read More
2023年7月15日

通过案例理解 MQTT 主题与通配符

什么是 MQTT 主题? MQTT 主题本质上是一个 UTF-8 编码的字符串,是 MQTT 协议进行消息路由的基础。MQTT 主题类似 URL 路径,使用斜杠 / 进行分层: 为了避免歧义且易于理解,通常不建议主题以 / 开头或结尾,例如 /chat 或 chat/。 不同于消息队列中的主题(比如 Kafka 和...

Read More
2023年7月15日

MQTT 共享订阅

共享订阅 共享订阅是在多个订阅者之间实现负载均衡的订阅方式: 上图中,共享 3 个 subscriber 用共享订阅的方式订阅了同一个主题 $share/g/topic,其中topic 是它们订阅的真实主题名,而 $share/g/ 是共享订阅前缀。EMQX 支持两种格式的共享订阅前缀: 示例 前缀 真实主题名 $share/abc/t/1 $share/abc/ t/1 #带群组的共享订阅 以 $share/<group-name> 为前缀的共享订阅是带群组的共享订阅:...

Read More