消息重发布动作

消息重发布(republish) 动作用来重新发出一个新的 MQTT 消息。新消息的主题QoSRetain消息内容等可以通过参数指定。

注意消息重发布动作不会终止老消息的投递。举例来说,如果一个消息 “t/1” 被重发布动作接收,然后重新发出一个新的 “t/2” 消息,”t/1” 的投递不会终止,订阅了 “t/1” 主题的客户端仍然可以接收到该消息。

创建规则

点击规则引擎 - 规则 - 创建规则,输入 SQL:

  1. SELECT
  2. *
  3. FROM
  4. "t/1"

创建动作

点击添加动作,选择数据转发,消息重新发布,输入目的主题等参数,参数定义请参考下表:

参数名定义类型
目的主题转发消息的主题名,可以使用占位符变量。文档中使用的${repub/to/${clientid}},在规则 SQL 配合使用的情况下,表示使用发布者的 clientid 作为后缀。自定义业务规则 SQL,可以使用其他的变量来代替String
目的 QoS转发消息的 QoS 等级,使用 0、1 或 2,也可以使用占位符变量。文档中使用的${qos},在规则 SQL 配合使用的情况下,表示使用原消息的 QoS 等级。自定义业务规则 SQL,可以使用其他的 Integer 类型的变量来代替Integer 或 占位符变量
目标保留消息标识转发消息的保留消息标识,可以使用占位符变量。文档中使用的${flags.retain},在规则 SQL 配合使用的情况下,表示使用原消息的 Retain 标识。自定义业务规则 SQL,可以使用其他的 Boolean 类型的变量来代替Boolean 或 占位符变量
消息内容模板转发消息的报文内容,可以使用占位符变量。文档中使用的${payload},在规则 SQL 配合使用的情况下,表示使用原消息的 Payload 内容。自定义业务规则 SQL,可以使用其他的变量来代替String

注意,当 QoS 与 Retain 使用占位符变量之后,从消息信息中获取到的参数不合法(即 QoS 不是 0、1 或 2,Retain 不是 true 、 false)时,消息会被丢弃,并标记此 action 失败。

image

使用

使用桌面 MQTT 客户端 MQTTX,设置 clientid 为 123456, 连接设备并订阅 repub/to/#

image

发布一条消息,可以看到收到了 topic 为 repub/to/123456 的消息。

image