The reoderingTimeout custom property feature is supported for Ignition7 in MQTT Engine module version 3.4.10 or greater and for Ignition8 in MQTT Engine module 4.0.4 through 4.0.13

In module version 4.0.14 or greater, it is replaced by a Reordering Timeout property under MQTT Engine General tab Miscellaneous sectionIf upgrading from a pre 4.0.14 module with a "reorderingTimeout" custom property configured, the upgrade will migrate the value for the custom property to the Reordering Timeout property. 


MQTT Engine needs to process messages from Sparkplug Edge Nodes in order. It is not uncommon for horizontally scalable/clustered MQTT Servers to not support guaranteed in order delivery of QoS 0 messages and this custom property allows the 're-ordering' of messages that arrive out of order.

How It Works

If MQTT Engine receives a message with an out of order sequence number, the message is buffered and the reorderingTimeout timer is started.

If the expected sequence number does not come in before the reorderingTimeout expires, all buffered data is flushed and a rebirth is requested.

If the expected sequence number does arrive before the reorderingTimeout expires, the data in the buffer is processed until the next expected sequence number message is missing, when the reorderTimeout timer is restarted.

If the buffered data is flushed, then any history associated with that data will be lost.

Usage

  1. On the MQTT Engine 'General' configuration tab, under the Advanced section, set 'Custom Properties' to be the following string: { "reorderingTimeout" : xxxx } where xxxx represents the timeout in milliseconds. For example, the configuration below sets the reorderingTimeout to 3 seconds

  • No labels