Introduction

MQTT Store and Forward allows data to be buffered locally at a client when connections are down to the MQTT Server infrastructure and deliver that data when the connection is restored. This feature is critical in most applications because if we lose connection to the MQTT Server we will lose data if it is not buffered locally. When Store and Forward is enabled and the edge node detects a disconnect to the MQTT Server, tags will be stored locally in a history store. When the edge node can reconnect to the MQTT Server, it will publish any stored tags. The rate at which these stored tags are flushed from the history store is configurable to prevent any delays in the delivery of live data.

Determining the settings for the MQTT Transmission History Store requires understanding the unique system properties at each Edge Node.

These include the number of tags at the Edge Node and Device levels, the frequency at which these tags are changing, the required period for data storage and the RAM or disk based storage available on the Edge hardware.

Review the MQTT Transmission Transmitters and Tag Trees documentation for help in identifying your Edge Node(s) and Device(s).

If using UDTs you should include each member tag of a UDT in your count when determining the number of tags.



MQTT Transmission History Store requires the following parameters:


How to determine these settings

Testing is the best way to determine your settings for your Edge Gateway(s) and the recommended approach is to:


For ease of control we recommend setting a Primary Host ID in both MQTT Engine and in the MQTT Transmission.

Removing the Primary Host ID from MQTT Engine will simulate the primary backend application going offline and cause MQTT Transmission to store data to the History Store.

Restoring the Primary Host ID to MQTT Engine will simulate that the primary backend application is online and cause MQTT Transmission to flush the stored data.


The History Store values used in the video were selected to easily show the process for testing. It would be expected that a much higher Flush Quantity would be required in a live environment to stop a build up of data in history store preventing the publishing of live data.