自动订阅

自动订阅

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

配置项

配置项定义

字段 含义 取值范围 默认值
auto_subscribe 自动订阅配置项集合 topics topics
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)

快速上手

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

auto_subscribe {
    topics = [
        {
            topic = "c/${clientid}"
        },
        {
            topic = "client/${clientid}/username/${username}/host/${host}/port/${port}"
            qos   = 1
            rh    = 0
            rap   = 0
            nl    = 0
        }
    ]
}
``` ```
+---------------------------+             +----------------+
| clientid: demo_client1    |               | EMQX Broker |
| u-----------------------n | u------------ | u---------- |
| local host: 192.168.1.234 | <-----------> |             |
| local port: 55678         |               |             |
+---------------------------+             +----------------+

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

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

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

topic: c/demo_client1
qos: 0
rh: 0
rap: 0
nl: 0
``` ```
topic: client/demo_client1/username/admin/host/192.168.1.234/port/55678
qos: 1
rh: 0
rap: 0
nl: 0