下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

MQTT 术语

代理/服务器

MQTT 代理(或服务器)是与 MQTT 客户端连接的中央服务器。MQTT 代理负责管理消息主题。当客户端向主题发布消息时,消息代理会向订阅该主题的所有客户端发送消息副本。

主题

MQTT 消息按主题层次结构排列,这些主题以 UTF-8 字符串的形式寻址。主题层次结构中的级别由正斜杠字符 ('/') 分隔,类似于文件在本地磁盘上的排列方式。使用主题字符串(路径)访问 MQTT 消息的方式与使用文件路径访问文件的方式相同。 

有效示例如下:

"my_house/family_room/temperature" 和 "my_house/kitchen/temperature"。

MQTT 负载

MQTT 负载是每条 MQTT 消息的主体,即 MQTT 数据包携带的应用程序数据。负载与数据格式无关,可以支持任何内容,如文本、图像、二进制数等。

发布

客户端在 MQTT 代理相关主题下发布消息时,会更新代理上与该主题关联的数据,并向该主题的订阅者(如有)发布新消息。可以发布消息到主题的客户端数量不受限制,但消息一次只能发布到一个主题。

订阅

客户端订阅 MQTT 代理上的主题后,即可接收所有发布到该主题的后续消息。可以订阅主题的客户端数量不受限制。客户端可以订阅特定主题,例如“my_house/kitchen/temperature”,也可以订阅多种主题(主题通配符)。 

主题过滤器

客户端使用主题过滤器来定义其主题订阅。订阅多个主题时,订阅的主题过滤器可以包含通配符。 

主题通配符

借助主题通配符,单个订阅可接收多个主题的更新。 

多级 (‘#’) 通配符用于指定所有剩余的层次结构级别,而且必须是主题订阅字符串中的最后一个字符 。 

  • 如果客户端订阅“my_house/#”,则将收到发布到“my_house/family_room”和“my_house/kitchen”的消息。 
  • 如果客户端订阅“my_house/family_room/#”,则将收到发布到“my_house/family_room/temperature”和“my_house/family_room/humidity”的消息,但是不会收到发布到“my_house/kitchen”的消息。 

单级 (‘+’) 通配符用于匹配一个主题级别的层次结构。单级 (‘+’) 通配符可以在主题过滤器中多次使用,也可与多级通配符结合使用。 

  • 如果客户端订阅“my_house/+/temperature”,则将收到发布到“my_house/family_room/temperature”和“my_house/kitchen/temperature”的消息。
  • 如果客户端订阅“my_house/+/temperature/#”,则将收到发布到“my_house/family_room/temperature/sensor_1”和“my_house/kitchen/temperature/sensor_2”的消息。

服务质量 (QoS)

服务质量 (QoS) 是指发布者和订阅者之间消息传递的可靠性。MQTT 定义了三个服务质量级别。

  • QoS0 可靠性级别最低,消息“最多送达一次”。QoS0 消息发送速度最快,但不能保证送达。这类似于 IP 网络上的 UDP 数据包,UDP/IP 协议并不保证 UDP 数据包一定到达其预定目的地。
  • QoS1 级别下,消息“至少送达一次”。QoS1 消息一定会送达(在可以送达的情况下) ,但可能会送达多次(重复)。
  • QoS2 可靠性级别最高,消息“仅送达一次”。QoS2 消息一定会送达(在可以送达的情况下),而且不会重复。QoS2 级别安全性最高,但速度最慢。

清除会话和持久会话

客户端可以将与 MQTT 代理的连接指定为“清除会话”或“持久会话”。

如果客户端断开与清除会话的连接,代理将删除客户端的订阅,客户端在下次连接时必须重新创建订阅。客户端将不会收到在断开连接后发布的任何消息。

如果客户端断开与持久会话的连接,代理会将客户端的订阅排入队列或记住订阅,并且存储在客户端断开连接后发布的所有非 QoS0 消息。客户端重新连接时,可接收在断开连接后发布的所有消息,其订阅也会自动重新建立。

最后遗嘱

最后遗嘱 (LWT) 消息属于 MQTT 消息,用于通知其他客户端有关非正常断开连接的客户端。如果客户端在 MQTT 连接处于活动状态时意外断开连接,则可能会导致非正常断开连接。

最后遗嘱消息是包含主题、QoS 级别和负载的普通 MQTT 消息。客户端在连接到代理时,可以选择指定自己的 LWT 消息。代理会存储此消息。如此一来,如果客户端意外断开连接,则代理会向所有订阅最后遗嘱消息主题的其他客户端发送该断开连接的客户端的 LWT 消息。 

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.