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