You need to enable JavaScript to run this app.
导航
主题重写
最近更新时间:2024.07.18 16:53:23首次发布时间:2024.07.18 16:53:23

MQTT 支持主题重写功能,根据用户配置的重写规则在客户端订阅、发布时将原有主题重写为新的目标主题。

背景信息

在某些场景中,修改业务主题可能会非常困难,此时可以使用主题重写功能。通过设置主题重写规则,在客户端订阅、发布时将原有主题重写为新的目标主题。
启用主题重写后,MQTT 将使用数据包中的主题来依次匹配重写规则中的原始主题。匹配成功之后,正则表达式提取原始主题中的信息,然后用目标表达式替换并生成一个新的主题。

注意事项

  • MQTT 会按照重写规则的配置顺序来执行主题重写。当一个主题可以同时匹配多个重写规则的原始主题时,也只使用第一个匹配的规则来重写该主题。
  • 如果规则中的正则表达式与 MQTT 数据包的主题不匹配,则重写失败,其他规则将不会被用来重写。

创建重写规则

  1. 在 Dashboard 的导航栏选择管理 > MQTT 高级特性 > 主题重写,然后单击页面右上角的添加

  2. 在弹出的对话框中,配置主题重写规则参数,然后单击添加
    图片

    参数

    说明

    动作类型

    主题重写规则的匹配动作。

    • Publish:匹配 PUBLISH 报文携带的主题。
    • Subscribe:匹配 SUBSCRIBE、UNSUBSCRIBE 报文携带的主题
    • Publish & Subscribe:对 PUBLISH、SUBSCRIBE 和 UNSUBSCRIBE 报文携带的主题都生效。

    原始主题

    设置原始主题或通配符表达式。

    正则表达式

    设置主题的正则表达式。正则表达式用来提取原始主题中的信息。

    目标主题

    设置目标主题或通配符表达式。

  3. 查看重写规则。
    支持编辑和删除操作,请按需执行。
    图片

示例说明

假设您已经配置了多个主题重写规则,配置如下:

规则①

  • 动作类型:Subscribe
  • 原始主题:test/+/topic/#
  • 正则表达式:^test/(.+)/topic/(.+)$
  • 目标主题:test/topic/$2

规则②

  • 动作类型:Subscribe
  • 原始主题:doc/test/+
  • 正则表达式:^doc/test/(\d+)$
  • 目标主题:mqtt/test/$1

如果您在客户端订阅的主题有test/1test/mqtt/topic/1doc/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