Skip to content

自动订阅

自动订阅能够给 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)

快速上手

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

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

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

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

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

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