MQTT 支持主题重写功能,根据用户配置的重写规则在客户端订阅、发布时将原有主题重写为新的目标主题。
在某些场景中,修改业务主题可能会非常困难,此时可以使用主题重写功能。通过设置主题重写规则,在客户端订阅、发布时将原有主题重写为新的目标主题。
启用主题重写后,MQTT 将使用数据包中的主题来依次匹配重写规则中的原始主题。匹配成功之后,正则表达式提取原始主题中的信息,然后用目标表达式替换并生成一个新的主题。
在 Dashboard 的导航栏选择管理 > MQTT 高级特性 > 主题重写,然后单击页面右上角的添加。
在弹出的对话框中,配置主题重写规则参数,然后单击添加。
参数 | 说明 |
---|---|
动作类型 | 主题重写规则的匹配动作。
|
原始主题 | 设置原始主题或通配符表达式。 |
正则表达式 | 设置主题的正则表达式。正则表达式用来提取原始主题中的信息。 |
目标主题 | 设置目标主题或通配符表达式。 |
查看重写规则。
支持编辑和删除操作,请按需执行。
假设您已经配置了多个主题重写规则,配置如下:
规则①
规则②
如果您在客户端订阅的主题有test/1
、test/mqtt/topic/1
、doc/test/1
,实际订阅的主题描述如下:
test/1
主题不能匹配任何重写规则的原始主题,所以不执行主题重写规则,实际订阅的主题就为test/1
。test/mqtt/topic/1
主题匹配到规则①中的原始主题,MQTT 执行主题重写规则,通过正则表达式匹配到元素 [mqtt、1]
,将匹配的第二个元素带入目标主题 test/topic/$2
,所以最后实际订阅主题为test/topic/1
。doc/test/1
主题匹配到规则②中的原始主题,执行主题重写规则,经过正则表达式替换,最后实际订阅主题为mqtt/test/1
。