一、基本概念
一条消息增强规则语句逻辑上包含两部分:
·Conditions(条件):规则触发的条件,如:当消息主题匹配 test/topic时
·Actions(动作):条件满足后执行的操作,如:为消息添加Message Expiry Interval = 30
二、限制与约束
·每个集群最多支持10条消息增强规则,如有更多配额需求,请联系我们。
·规则具备优先级设置,优先级数值越小则优先级越高。服务端会按照消息增强规则列表页的规则顺序执行,高优先级规则将覆盖低优先级规则中的动作;如果规则配置冲突,以优先级排序更高的为准。
·若使用变量替换后字段内容超出长度或大小限制,服务端将自动对超出部分截断处理。
三、新建规则
1. 登录消息队列 MQTT 版控制台 > 集群管理 > 消息增强规则,单击左上角新建规则按钮,进行消息增强规则的配置。
2. 根据实际情况填写规则基本信息、匹配条件及具体增强规则的配置,具体字段填写参考下文 填写说明。填写完毕后单击创建规则,如创建时开启了基本信息中的“是否启用该规则”按钮,创建后此规则将在 1 分钟内生效;如创建时未选择开启,也可在规则创建后通过列表页进行启用。
3. 创建成功的规则可在列表页进行查看和管理,对于处于“激活”状态的规则不支持删除。
四、规则优先级
1. 单击调整优先级按钮可调整规则执行的顺序,服务端会按照当前列表的规则顺序执行;如果规则配置冲突,以优先级排序更高的为准。
2. 通过拖拽每行规则前的图标可实现顺序调整。
五、填写说明
| 展示名称 | API 参数 | 说明 | 是否必填 | 示例值 |
| 规则名称 | RuleName | 设置规则名称。需符合命名规则:3-64个字符,支持中文、字母、数字、“-”及“_”。 | 是 | “rule001” |
| 描述 | Remark | 设置规则描述,不得超过128个字符。 | 否 | “设定过期时间” |
| 用户名 | username | 填写单个用户名或单条资源表达式,支持使用通配符和规则变量,为 "*" 表示支持所有用户名 | 是 | "user*" |
| 客户端 ID | clientId | 填写单条资源表达式,支持使用通配符和规则变量,为 "*"表示支持所有客户端。 | 是 | "sensor*" |
| Topic | topic | 填写单条资源表达式,支持使用通配符和规则变量,为 "*"表示支持所有 Topic。 | 是 | "home/room1/*" |
| Message Expiry Interval | messageExpiryInterval | 设定消息的过期时间,单位为秒。必须为正整数,取值范围为 0–259200 秒(即 0–72 小时),不允许填0。 | 否 | 3600(表示1小时后过期) |
| Response Topic | responseTopic | 指定响应主题,必须为有效的UTF-8 字符串,长度不超过 256 个字符,不得包含通配符“+”或“#”。支持使用规则变量替换。 | 否 | "client/response/123" |
| Correlation Data | correlationData | 用于关联请求与响应的数据字段,必须为有效的UTF-8 字符串,总大小不超过 8KB。支持使用规则变量替换。 | 否 | "request-20251031" |
| User Properties | userProperty | 自定义用户属性列表,必须为有效的UTF-8 字符串,每个属性值总大小(key-value对)不超过 8KB,最多添加10个用户属性。支持使用规则变量替换。 | 否 | [{"key":"env","value":"production"},{"key":"version","value":"1.1.1"}] |
六、用户名
username 参数支持下列通配符:
| 通配符/Wildcard | 语义 |
| ? | 任何一个字符。 |
| * | 任意个字符。 |
七、客户端 ID
clientId 参数支持下列通配符:
| 通配符/Wildcard | 语义 |
| ? | 任何一个字符。 |
| * | 任意个字符。 |
八、Topic
topic 参数支持下列通配符:
| 通配符/Wildcard | 语义 |
| + | 与 MQTT 协议 Topic Filter Wildcard 一致。 |
| # | 与 MQTT 协议 Topic Filter Wildcard 一致。 |
| ? | 任何一个字符。 |
| * | 任意个字符。 |
九、使用方法
在输入框内输入${,将自动展示系统默认的规则变量替换列表。
十、支持参数
支持规则变量替换的参数有:
·topic
·clientId
·username
·responseTopic
·correlationData
·userProperty
注意:在规则执行时,${Variable}将被动态替换为对应的真实值;若变量不存在,则替换为空字符串。请在使用前确认变量有效性。
十一、规则变量
客户端变量字段
| 变量名/Variable | 语义 |
| InstanceID | MQTT 实例 ID |
| ClientId | MQTT Client ID |
| Username | MQTT 客户端连接 Username |
| Password | MQTT 客户端连接 Password |
| Clientip | MQTT 客户端 IP 地址 |
| Certificate.Pem | 客户端证书的 PEM 格式内容 |
| Certificate.ChainSn | 证书链的序列号 |
证书主题字段
| 变量名/Variable | 语义 |
| Certificate.Subject.Organization | 证书主题 – 组织名称 |
| Certificate.Subject.OrganizationalUnit | 证书主题 – 组织单元 |
| Certificate.Subject.State | 证书主题 – 州/省 |
| Certificate.Subject.CommonName | 证书主题 – 通用名称 |
| Certificate.Subject.SerialNumber | 证书主题 – 序列号 |
| Certificate.Subject.Title | 证书主题 – 头衔 |
| Certificate.Subject.Surname | 证书主题 – 姓氏 |
| Certificate.Subject.GivenName | 证书主题 – 名字 |
| Certificate.Subject.Initials | 证书主题 – 缩写 |
| Certificate.Subject.Pseudonym | 证书主题 – 别名 |
| Certificate.Subject.GenerationQualifier | 证书主题 – 代际限定符 |
| Certificate.Subject.DistinguishedNameQualifier | 证书主题 – 可辨别名称限定符 |
| Certificate.Subject.Country | 证书主题 – 国家/地区代码 |
证书颁发者字段
| 变量名/Variable | 语义 |
| Certificate.Issuer.Organization | 证书颁发者 – 组织名称 |
| Certificate.Issuer.OrganizationalUnit | 证书颁发者 – 组织单元 |
| Certificate.Issuer.State | 证书颁发者 – 州/省 |
| Certificate.Issuer.CommonName | 证书颁发者 – 通用名称 |
| Certificate.Issuer.SerialNumber | 证书颁发者 – 序列号 |
| Certificate.Issuer.Title | 证书颁发者 – 头衔 |
| Certificate.Issuer.Surname | 证书颁发者 – 姓氏 |
| Certificate.Issuer.GivenName | 证书颁发者 – 名字 |
| Certificate.Issuer.Initials | 证书颁发者 – 缩写 |
| Certificate.Issuer.Pseudonym | 证书颁发者 – 别名 |
| Certificate.Issuer.GenerationQualifier | 证书颁发者 – 代际限定符 |
| Certificate.Issuer.DistinguishedNameQualifier | 证书颁发者 – 可辨别名称限定符 |
| Certificate.Issuer.Country | 证书颁发者 – 国家/地区代码 |
替代名称字段
| 变量名/Variable | 语义 |
| Certificate.Subject.AlternativeName.RFC822Name | 主题备用名称 – 电子邮件地址 |
| Certificate.Subject.AlternativeName.DNSName | 主题备用名称 – DNS 域名 |
| Certificate.Subject.AlternativeName.DirectoryName | 主题备用名称 – 目录名称 |
| Certificate.Subject.AlternativeName.UniformResourceIdentifier | 主题备用名称 – 统一资源标识符 |
| Certificate.Subject.AlternativeName.IPAddress | 主题备用名称 – IP 地址 |
| Certificate.Issuer.AlternativeName.RFC822Name | 颁发者备用名称 – 电子邮件地址 |
| Certificate.Issuer.AlternativeName.DNSName | 颁发者备用名称 – DNS 域名 |
| Certificate.Issuer.AlternativeName.DirectoryName | 颁发者备用名称 – 目录名称 |
| Certificate.Issuer.AlternativeName.UniformResourceIdentifier | 颁发者备用名称 – 统一资源标识符 |
| Certificate.Issuer.AlternativeName.IPAddress | 颁发者备用名称 – IP 地址 |