数据排序
有了字段中源自设备的流数据后,事件和订阅可用于业务逻辑和数据处理等。通过订阅处理的数据会被引入受支持的数据库。ThingWorx 中的数据处理可并行执行,以支持多个事物和关联的属性值。
当数据流入 ThingWorx 并通过事件和订阅予以处理时,对属性相关事件进行顺序处理时需具备有序数据。经处理的数据也应按顺序引入数据库。
问题说明
如果数据顺序被打乱,则会影响事件生成、订阅和最终的数据引入。Kepware 在高可用性设置 (存在用于平衡 WebSocket 连接的连接服务器) 中断开连接和重新连接期间会出现此情况。
解决方案
ThingWorx 9.6 引入了以下更改:
1. 对于连接服务器,保持特定事物与 ThingWorx ID 和 WebSocket (WS) 通道 ID 对的粘性。这可确保特定事物的属性值更新始终发送至特定的 ThingWorx 和特定的 WebSocket 通道。
2. eMessage Connector (eMC) 内部使用连接服务器与 ThingWorx Platform 进行通信。连接服务器的更改有助于 eMessage Connector (eMC) 向 ThingWorx 发送有序数据。
3. 在 ThingWorx Platform 中,针对每个事物实施 Akka Actor。通过事物的每个传入属性值创建一个 Actor,并将属性值推送至 Actor 的邮箱。Akka Actor 随后会从队列中提取消息并按顺序对其进行处理,从而确保在平台端进行有序的数据处理。
4. 显示一个新标志以在 platform-settings.jsonBasicSettings 中启用数据排序。
设置
类型
默认值
EnableDataOrdering
BOOLEAN
true false
false
* 
事件排序是 9.5 中提供的一项功能。要在订阅定义中打开此配置,请单击 Execute Events Sequentially
其他组件影响
Java 和 C SDK 可使用以下 API 向 ThingWorx 发送属性值:
VirtualThing.setProperty()
VirtualThing.updateSubscribedProperties();
使用先前的 API,依次向 ThingWorx Platform 发送属性。
为实现数据排序,如果连接服务器位于负载均衡器之后,请调整负载均衡器配置以使其具有粘性。没有这些数据,就无法实现排序。
这对您有帮助吗?