Skip to content

Data Ordering

To achieve high throughput, Thingworx relies heavily on parallel and distributed processing. However, high concurrency can cause requests and events to be processed out of order relative to their emission time.

  • Starting with Thingworx 9.5, it is possible to configure Subscriptions to execute sequentially. Sequential Subscriptions ensure that events are processed in the order they occur.
  • Since 9.7, it is possible to configure Thingworx to ensure that Property updates (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 Updates (9.7+)

  • Applies to data pushed from AlwaysOn devices and Axeda agents using the UpdateSubscribedPropertyValues and  UpdateSubscribedPropertyValuesBatched services
    • CSDK - twApi_PushSubscribedProperties()
    • NSDK/JSDK - VirtualThing::updateSubscribedProperties()
    • EMS/LSR - thingworx.server.setProperties()
    • Axeda - Data item
  • System wide configuration to be applied on multiple Thingworx components

    • Platform

      In platform-settings.json:

      {  
      "PlatformSettingsConfig": {  
          "BasicSettings": {  
            
          "EnableDataOrdering": true,
      

    • 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)

External Resources