规则
您可以在规则中添加动作(Action),以定义处理后的数据应如何处理。每条规则可以对应一个或多个动作,而动作需要配置已定义的连接器,也就是指定数据的发送目标。
添加动作
创建规则后,点击新建规则步骤页面上的下一步按钮,进入新建动作步骤页面。在新建动作步骤页面上,从连接器下拉框中选择相关联的连接器。该页面将根据所选的关联连接器类型显示不同的动作配置选项。有关动作配置的详细示例,请参见添加重新发布动作和添加将数据转发到目标服务的动作。
规则可以关联多个动作。当您点击确认完成动作创建后,将出现成功创建新规则弹窗。如果您想添加另一个动作,可以点击继续以进行操作并选择另一个连接器。例如,一个动作可以将数据转发给 Kafka,而另一个动作将数据发送到 HTTP 服务。
添加重新发布动作
以下步骤演示了如何添加一个动作,将从主题 t/#
接收的原始消息重新发布到另一个主题 a/1
。
从使用连接器下拉框中选择
重新发布
。配置以下设置:
- 主题:在本示例中设置为目标主题
a/1
; - QoS:在本示例中设置为重新发布的消息的 QoS 为
0
; - Retain:设置是否将此消息作为保留消息转发,本教程中保持默认设置
false
; - Payload:输入
${payload}
,表示重新发布的消息将与原始消息具有相同的 payload,不进行任何修改。 - MQTT 5.0 消息属性:点击切换开关以根据需要配置消息属性,允许您为重新发布的消息添加丰富的消息元数据描述。
- 有效载荷指示器:指示消息格式。值设置为
false
时,消息是未确定的字节,设置为true
时,意味着消息体中的有效载荷是 UTF-8 编码的字符数据。这将有助于 MQTT 客户端或 MQTT 服务器可以更加有效的解析消息内容,而不用特意去对于消息体进行格式或类型的判断。 - 消息过期时间:输入一个值(以秒为单位)以指定消息应在经过一段时间后过期,并且如果未传递给预期的接收方,则被视为无效。
- 内容类型:指定重新发布消息中的载荷内容的类型或格式(MIME 类型),例如,
text/plain
表示文本文件,audio/aac
表示音频文件,而application/json
表示是一条 JSON 格式的应用消息。 - 响应主题:输入要将响应消息发布到的特定 MQTT 主题。例如,如果您希望将响应发送到名为"response/my_device"的主题,您应输入:
response/my_device
。 - 对比数据:输入一个唯一标识符或数据,以将响应消息与原始请求消息相关联。您可以输入唯一的请求标识符、事务 ID 或在您的应用程序上下文中有意义的任何其他信息。
- 有效载荷指示器:指示消息格式。值设置为
- 主题:在本示例中设置为目标主题
点击确认完成动作创建。
在成功创建新规则弹窗中,点击返回规则列表以完成规则创建。
添加将数据转发到目标服务动作
您还可以添加动作,通过关联的连接器将处理结果转发到目标服务。在新建动作步骤页面上,从连接器下拉列表中选择目标连接器。有关动作配置的详细信息,请参见将 MQTT 数据发送到 HTTP 服务、将 MQTT 数据传输到 Apache Kafka,或各数据集成页面。
备选动作
注意
备选动作功能仅适用于 EMQX 5.91 版本以及之后的专有版部署。
您可以为任意一个动作配置一个或(最多)两个备选动作。当主动作在处理消息时发生失败时,这些备选动作将会被触发。通过配置备选动作,您可以将失败的消息转发到其他目标(如另一个输出动作或重发布动作),从而提升数据的可靠性和可观测性。
备选动作的典型用途包括:
- 将失败的消息转发到备用数据系统(例如另一个输出动作);
- 将失败的消息重发布到监控主题,用于故障排查或告警通知;
- 在主动作发生临时故障时,减少消息丢失的风险。
主要特性
- 仅当主动作处理消息失败时,备选动作才会被触发。失败情形包括投递失败、缓冲区溢出、请求超时(TTL 到期)等。
- 无论其自身配置如何,所有备选动作始终以异步模式执行。
- 如果配置了两个备选动作,他们将会同时被触发,EMQX Platform 不会逐个尝试,也不会在第一个成功后停止。
- 备选动作使用与主动作相同的缓冲机制,消息将在 TTL 到期前被多次尝试,或在缓冲溢出前排入队列。
- 备选动作不会递归触发新的备选动作:如果某个备选动作自身失败,即使它也配置了备选动作,也不会继续执行。
- 备选动作的执行不会影响主动作或其所属规则的运行统计数据,两者是相互独立的。