通过将传入消息转换为edge event并存储到edge queue,将消息从云端推送到Edge。消息路由至 Success 连接(edge event成功推送到持久存储时)或 Failure 连接(处理期间发生错误或消息类型不支持时)。
用法
此节点支持selective将数据从云端同步到Edge实例。适用于自动同步全部数据会消耗大量资源或不必要的场景。例如Edge实例通常不需要所有设备的完整历史遥测——只需与本地操作相关的特定数据。使用此节点可显式控制哪些消息同步到哪些Edge,避免传输不会使用的大量数据。
将消息推送到Edge的典型流程如下:
-
消息到达“push to edge”节点,包含需要同步到Edge实例的数据(遥测、属性、告警等)。
-
节点根据消息类型将消息转换为edge event,并存储到持久存储(edge queue)。
-
Edge实例从队列检索待处理的edge events以进行同步。
-
若edge event成功推送到持久存储,消息经
Success连接路由。若发生错误,经Failure连接路由。
配置
配置指定属性相关消息的默认属性作用域。
- Attributes scope(属性作用域) - 属性的默认作用域(
SERVER_SCOPE、CLIENT_SCOPE或SHARED_SCOPE)。可通过在消息元数据中包含scope键动态覆盖此值。
JSON Schema
支持的消息类型
节点支持以下消息类型:
POST_TELEMETRY_REQUEST- 发布给设备的时序数据POST_ATTRIBUTES_REQUEST- 发布给设备的属性数据ATTRIBUTES_UPDATED- 设备属性已更新ATTRIBUTES_DELETED- 设备属性已删除TIMESERIES_UPDATED- 时序数据已更新ALARM- 告警创建、更新或清除ALARM_ACK- 告警已确认ALARM_CLEAR- 告警已清除CONNECT_EVENT- 设备已连接DISCONNECT_EVENT- 设备已断开ACTIVITY_EVENT- 检测到设备活动INACTIVITY_EVENT- 检测到设备非活动TO_SERVER_RPC_REQUEST- 设备到服务器的RPC请求
消息处理算法
-
节点验证消息类型是否受支持。若不受支持,消息经
Failure连接路由。 -
根据消息类型,节点构建适当的edge event。
- 若消息发起者为
EDGE实体:- 将edge event推送到该特定Edge实例的持久存储
- 若消息发起者为其他实体类型:
- 节点查找发起者实体分配到的所有Edge
- 为每个Edge将edge event推送到持久存储
- 若实体未分配给任何Edge,消息被确认且不进行进一步处理
- 若所有edge events成功推送到持久存储,消息经
Success连接路由;若发生任何错误,经Failure连接路由。
输出连接
Success- edge event(s) 已成功推送到持久存储。传出消息与传入消息相同。
Failure- 处理过程中发生错误,例如:
- 不支持的消息类型
- 意外错误
- 处理过程中发生错误,例如:
示例
示例1 — 将设备遥测推送到Edge
传入消息
发起者:DEVICE。
类型:POST_TELEMETRY_REQUEST。
数据:
1
2
3
4
{
"temperature": 22.5,
"humidity": 65.3
}
元数据:
1
2
3
{
"ts": "1609459200000"
}
节点配置
1
2
3
{
"scope": "SERVER_SCOPE"
}
传出消息
传出消息与传入消息相同。经 Success 连接路由。
结果
创建edge event并推送到发起者设备分配到的所有Edge的持久存储。edge event包含遥测数据和时间戳。 Edge实例检索此事件时将相应处理。