自动订阅

自动订阅能够给 EMQX 设置多个规则,在设备成功连接后按照规则为其订阅指定主题,不需要额外发起订阅。

配置项

配置项定义

字段含义取值范围默认值
auto_subscribe自动订阅配置项集合topicstopics
topics订阅选项订阅选项列表,参考下表 订阅选项[]

订阅选项

字段含义取值范围默认值
topic必填,主题,订阅标识符字符串,支持占位符
qos非必填,服务质量( QoS )0,1,2 服务端可以向客户端发送的应用消息的最大 QoS 等级0
rh非必填,仅在设备使用 MQTT 5.0 版本协议时生效;当订阅建立时,是否发送保留消息0:订阅建立时发送保留消息;
1:订阅建立时,若该订阅当前不存在则发送保留消息;
2:订阅建立时不要发送保留消息
0
rap非必填,仅在设备使用 MQTT 5.0 版本协议时生效;向此订阅转发应用消息时,是否保持消息被发布时设置的保留(RETAIN)标志0:表示向订阅转发应用消息时把保留标志设置为 0;
1:表示向此订阅转发应用消息时保持消息被发布时设置的保留标志
0
nl非必填,仅在设备使用 MQTT 5.0 版本协议时生效;应用消息是否能够被转发到发布此消息的客户端0:表示应用消息可以被转发给发布此消息的客户端;
1:表示应用消息不能被转发给发布此消息的客户端
0

订阅主题占位符

占位符含义
${clientid}设备 ID
${username}设备连接使用的用户名
${ip}设备 TCP 连接本地 IP 地址
${port}设备 TCP 连接本地端口号(Port)

快速上手

将下面的配置项添加到配置文件中

  1. auto_subscribe {
  2. topics = [
  3. {
  4. topic = "c/${clientid}"
  5. },
  6. {
  7. topic = "client/${clientid}/username/${username}/host/${host}/port/${port}"
  8. qos = 1
  9. rh = 0
  10. rap = 0
  11. nl = 0
  12. }
  13. ]
  14. }
  1. +---------------------------+ +----------------+
  2. | clientid: demo_client1 | | EMQX Broker |
  3. | u-----------------------n | u------------ | u---------- |
  4. | local host: 192.168.1.234 | <-----------> | |
  5. | local port: 55678 | | |
  6. +---------------------------+ +----------------+

设备使用 MQTT 5.0 以下版本时,登录成功后可以获得以下订阅:

  1. topic: c/demo_client1
  2. qos: 0
  1. topic: client/demo_client1/username/admin/host/192.168.1.234/port/55678
  2. qos: 1

设备使用 MQTT 5.0 版本时,登录成功后可以获得以下订阅:

  1. topic: c/demo_client1
  2. qos: 0
  3. rh: 0
  4. rap: 0
  5. nl: 0
  1. topic: client/demo_client1/username/admin/host/192.168.1.234/port/55678
  2. qos: 1
  3. rh: 0
  4. rap: 0
  5. nl: 0