消息
消息(RuleMsg)是传入规则链的输入和输出消息或者事件,它允许被节点组件转换、过滤和分发。消息在规则链中流转时会携带完整的上下文信息,包含以下字段:
- Ts: 类型:
int64
,消息产生的时间戳,用于记录消息的生成时间 - Id: 类型:
string
,消息的唯一标识符。同一条消息在规则引擎流转的整个生命周期中保持不变,用于追踪和关联消息 - DataType: 类型:
string
,消息数据的格式类型,可选值:- JSON:JSON格式数据(默认),在脚本组件中会自动解析成对象,可直接操作JSON字段
- TEXT:文本格式数据
- BINARY:二进制格式数据
- Type: 类型:
string
,消息类型。规则节点组件可以根据该字段进行消息路由和分发处理 - Data: 类型:
string
,消息的实际内容/负载数据 - Metadata: 类型:
map[string]string
,消息的元数据信息,用于存储消息的附加属性和上下文数据
消息在规则链的处理过程中,各个节点可以:
- 对消息进行路由,决定消息流向下一个或多个节点
- 修改和转换消息内容,包括数据内容、类型和格式
- 基于消息内容增强数据,如查询数据库补充信息
- 根据消息执行具体动作,如发送通知、调用API等
# Metadata
和 Data
区别
在RuleGo
规则引擎中,消息的 metadata
和 data
(也指消息的消息负荷)有以下区别:
# 1. 定义
metadata
(元数据):是与消息相关的附加信息,以键值对的形式存在,它通常不包含消息的核心内容,而是用于描述消息的上下文、来源或其他辅助信息。例如,metadata
可能包含消息的来源设备类型、时间戳、用户属性、产品ID、设备类型等。data
(消息负载,payload
):是消息的实际内容,通常是一个 JSON 格式的报文,包含了需要处理的核心数据。例如,传感器的温度、湿度等测量值。
# 2. 用途
metadata
:- 用于提供消息的上下文信息,帮助规则引擎(或者处理节点)更好地理解和处理消息。
- 可用于消息的路由、过滤和条件判断。例如,根据
metadata
中的设备类型或用户属性来决定消息的处理路径。 - 可以在规则链中动态更新和扩展。
data
:- 包含需要被处理或分析的核心数据。
- 是规则引擎(或者处理节点)进行数据转换、计算和存储的主要对象。
# 3. 示例
假设有一个温度传感器的消息:
metadata
:{ "sensorType": "temperature", "deviceId": "sensor123", "timestamp": "2025-02-27T10:00:00Z" }
1
2
3
4
5data
:{ "temperature": 22.4 }
1
2
3
在这个例子中,metadata
描述了消息的来源和上下文,而 data
包含了实际的温度值。
在 GitHub 上编辑此页 (opens new window)
上次更新: 2025/02/27, 09:12:50