检查入站消息 data 和/或 metadata 中是否存在指定字段。 默认情况下,节点要求所有指定字段都存在;可切换为“至少一个”模式。
前置条件
入站消息data必须为JSON对象。
配置
字段说明
- 消息字段名 — 可选。要在消息data中查找的顶级 JSON字段名集合。
- Metadata字段名 — 可选。要在消息metadata中查找的metadata键名集合。
- 检查所有指定字段是否都存在 — 开关。
- 启用: 仅当所有列出的消息/metadata字段都存在时才经
True路由。 - 禁用: 当至少一个列出的消息/metadata字段存在时经
True路由。
- 启用: 仅当所有列出的消息/metadata字段都存在时才经
JSON Schema
消息处理逻辑
- 将 data 提取为JSON对象,metadata 提取为键值对。
- 评估存在性:
- 若检查所有键已启用:当
messageNames中列出的每个字段均存在于data 且metadataNames中列出的每个字段均存在于metadata时,经True路由。 - 若检查所有键已禁用:当任意列出的字段存在于data 或 metadata时,经
True路由。
- 若检查所有键已启用:当
- 否则经
False路由。若发生错误(如负载不是JSON对象),经Failure路由。
输出连接
True:- 当配置的存在条件满足时。
False:- 当配置的存在条件不满足时。
Failure:- 当入站消息data无法解析为JSON对象时。
- 消息处理过程中发生其他意外错误时。
示例
以下示例仅展示入站消息的相关字段。除非另有说明,其他消息字段可为任意值。
示例1 — 所有必填data字段都存在 → True
入站消息
Data:
1
2
3
4
{
"temp": 22.5,
"humidity": 55
}
节点配置
1
2
3
4
5
6
7
8
{
"messageNames": [
"temp",
"humidity"
],
"metadataNames": [],
"checkAllKeys": true
}
系统状态
不相关。
结果
经 True 路由。
说明
temp 和 humidity 均存在于负载中。
示例2 — 缺少一个必填data字段 → False
入站消息
Data:
1
2
3
{
"temp": 22.5
}
节点配置
1
2
3
4
5
6
7
8
{
"messageNames": [
"temp",
"humidity"
],
"metadataNames": [],
"checkAllKeys": true
}
系统状态
不相关。
结果
经 False 路由。
说明
humidity 不存在。
示例3 — 至少一个metadata字段存在 → True
入站消息
Metadata:
1
2
3
4
{
"deviceName": "Pump-42",
"token": "abc123"
}
节点配置
1
2
3
4
5
6
7
8
{
"messageNames": [],
"metadataNames": [
"token",
"tenantId"
],
"checkAllKeys": false
}
系统状态
不相关。
结果
经 True 路由。
说明
至少一个列出的metadata键(token)存在。
示例4 — 至少一个data字段存在 → True
入站消息
Data:
1
2
3
4
{
"temperature": 123,
"humidity": 42
}
Metadata:
1
2
3
4
{
"deviceName": "Sensor-1",
"deviceType": "TemperatureSensor"
}
节点配置
1
2
3
4
5
6
7
8
9
10
{
"messageNames": [
"temperature"
],
"metadataNames": [
"token",
"tenantId"
],
"checkAllKeys": false
}
系统状态
不相关。
结果
经 True 路由。
说明
至少一个列出的键(temperature)存在。
示例5 — 无效消息格式 → Failure
入站消息data
1
"not a JSON object"
节点配置
1
2
3
4
5
6
7
{
"messageNames": [
"temp"
],
"metadataNames": [],
"checkAllKeys": true
}
系统状态
不相关。
结果
Failure。
说明
消息data不是JSON对象,节点无法检查data键。