The MQTT Injectors have a Push Trigger configuration parameter that determines when to push data in combination with the Tag Pacing Period

There are three settings:

  • EVENT_DRIVEN
    • When a tag change event occurs tag events will be aggregated for the 'Tag Pacing Period' before being pushed
    • Pushed message will contain all change events for a tag within the 'tag pacing period'
  • PERIODIC
    • Will push data for all tags associated with the Agent every 'Tag Pacing Period'
    • Only one event per tag will be sent - this may result in data loss if tags are changing more frequently than the 'tag pacing period'
  • HYBRID (added in 4.0.28)
    • Will push change events as EVENT_DRIVEN but will also push non-changed events on the same 'Tag Pacing Period'
    • Two messages will be pushed - one containing the tag change events and one containing the non-changed tag data


Let's see how each of these settings affect what data will be pushed using this example:

  • We have three tags, T1, T2, and T3 under the scope of the Agent.
    • They are all integers with an initial value of 0 at time 0
  • The ‘tag pacing period’ in the Agent config is 1000 ms.
  • The BIRTH is published at time '0' (i.e. when the Injector connects)

The tags change value per the schedule below:

Timestamp (in seconds)

Tag Path

Value

0.5

T1

1

0.75

T2

1

1.5

T3

1

2.5

T1

2

4.5

T1

3

4.75

T1

4


Event Driven

Messages will be pushed on the 'tag pacing period', in this case every second, and the message will contain changing tags only:

    • At Time 0 - BIRTH - Includes:

      • T1 with a value of 0 and timestamp of 0

      • T2 with a value of 0 and timestamp of 0

      • T3 with a value of 0 and timestamp of 0

    • At Time +1 - DATA - Includes:

      • T1 with a value of 1 and timestamp of 0.5

      • T2 with a value of 1 and timestamp of 0.75

    • At Time +2 - DATA - Includes:

      • T3 with a value of 1 and timestamp of 1.5

    • At Time +3 - DATA - Includes:

      • T1 with a value of 2 and timestamp of 2.5

    • At Time +4 
      Nothing is published as there were no tag changes between Time + 3 and Time +4
    • At Time +5 - DATA - Includes:

      • T1 with a value of 3 and timestamp of 4.5

      • T1 with a value of 4 and timestamp of 4.75


Periodic

Messages will be pushed on the 'tag pacing period', in this case every second, and the message will contain all current values:

    • At Time 0 - BIRTH - Includes:

      • T1 with a value of 0 and timestamp of 0

      • T2 with a value of 0 and timestamp of 0

      • T3 with a value of 0 and timestamp of 0

    • At Time +1 - DATA - Includes:

      • T1 with a value of 1 and timestamp of 0.5

      • T2 with a value of 1 and timestamp of 0.75

      • T3 with a value of 0 and timestamp of 0

    • At Time +2 - DATA - Includes:

      • T1 with a value of 1 and timestamp of 0.5

      • T2 with a value of 1 and timestamp of 0.75

      • T3 with a value of 1 and timestamp of 1.5

    • At Time +3 - DATA - Includes:

      • T1 with a value of 2 and timestamp of 2.5

      • T2 with a value of 1 and timestamp of 0.75

      • T3 with a value of 1 and timestamp of 1.5

    • At Time +4 - DATA - Includes:

      • T1 with a value of 2 and timestamp of 2.5

      • T2 with a value of 1 and timestamp of 0.75

      • T3 with a value of 1 and timestamp of 1.5

    • At Time +5 - DATA - Includes:

      • T1 with a value of 4 and timestamp of 4.75

      • T2 with a value of 1 and timestamp of 0.75

      • T3 with a value of 1 and timestamp of 1.5

        Note the missed event for T1 with value 3 at timestamp 4.5

Hybrid

Two messages will be pushed on the 'tag pacing period', in this case every second, with one message containing tag change events and one containing the non-changed tag data:

    • At Time 0 - BIRTH - Includes:

      • T1 with a value of 0 and timestamp of 0

      • T2 with a value of 0 and timestamp of 0

      • T3 with a value of 0 and timestamp of 0

    • At Time +1 - DATA - Includes:

      • T1 with a value of 1 and timestamp of 0.5

      • T2 with a value of 1 and timestamp of 0.75

    • At Time +1 - DATA - Includes:

      • T3 with a value of 0 and timestamp of 0

    • At Time +2 - DATA - Includes:

      • T3 with a value of 1 and timestamp of 1.5

    • At Time +2 - DATA - Includes:
      • T1 with a value of 1 and timestamp of 0.5
      • T2 with a value of 1 and timestamp of 0.75

    • At Time +3 - DATA - Includes:

      • T1 with a value of 2 and timestamp of 2.5

    • At Time +3 - DATA - Includes:
      • T2 with a value of 1 and timestamp of 0.5
      • T3 with a value of 1 and timestamp of 1.5

    • At Time +4 - DATA - Includes:

      • T1 with a value of 2 and timestamp of 2.5

      • T2 with a value of 1 and timestamp of 0.75

      • T3 with a value of 1 and timestamp of 1.5

    • At Time +5 - DATA - Includes:

      • T1 with a value of 3 and timestamp of 4.5

      • T1 with a value of 4 and timestamp of 4.75

    • At Time +5 - DATA - Includes:
      • T2 with a value of 1 and timestamp of 0.75

      • T3 with a value of 1 and timestamp of 1.5

  • No labels