Data Ordering
To ensure high throughput, Thingworx heavily relies on parallel and distributed processing. However, high concurrency can lead to requests and events being processed out of order relative to their emission time.
- Starting with Thingworx 9.5, it is possible to configure Subscriptions to execute sequentially. This ensures that subscriptions are executed in the order events are triggered.
- Since 9.7, it is possible to configure Thingworx to ensure that Property writes (i.e. data pushed from devices) are processed in order.
- Data Ordering refers to the combination of the above features to ensure that data is ingested and data change events are executed in order.
Info
The use of Data Ordering can impact processing performance
Sequential Subscriptions (9.5+)
- Configurable at Subscription level
- Driven by the Execute Events Sequentially option on the Subscription
Ordered Property Writes (9.7+)
- Applies to data pushed from AlwaysOn devices and Axeda agents using the
UpdateSubscribedPropertyValues
andUpdateSubscribedPropertyValuesBatched
services- CSDK -
twApi_PushSubscribedProperties()
- NSDK/JSDK -
VirtualThing::updateSubscribedProperties()
- EMS/LSR -
thingworx.server.setProperties()
- Axeda - Data item
- CSDK -
-
System wide configuration to be applied on multiple Thingworx components
-
Platform
In
platform-settings.json
: -
Connection Server (9.3+) / eMessage Connector (2.5+)
- In connector.conf add
cx-server.data-ordering true
- It is recommended to configure the Load Balancer in front of multiple connectors to use device/ip stickiness (for both CXS and EMC)
- In connector.conf add
-
External Resources
- PTC Help Center - Data Ordering