Throttling

The throttle clause is used to:

  • Restrict the number of updates sent to reference topic subscribers, thus reducing network utilisation or the processing each subscriber must do.

  • Constrain the rate at which a reference topic is updated, when its source topic is updated

  • Restrict the rate at which client sessions can observe changes to reference topic values using the fetch API

The throttle clause is optional and has the following form:

throttle to <X> updates every <period>

where X is a positive integer, and period is a positive integer followed by a time unit (seconds, minutes, or hours).

For example, the following topic view specification maps all topics below the path a to reference topics below the path b, but updates the value of each reference topic at most twice every 5 seconds

map ?a// to b/<path(1)> throttle to 2 updates every 5 seconds

To improve readability, the throttling clause allows 1 update as an alternative to 1 updates, and every second as an alternative to every 1 seconds (the same applies to other time units).

For example, the following topic view specification maps all topics below the path a to reference topics below the path b, but updates the value of each reference topic at most once every hour:

map ?a// to b/<path(1)> throttle to 1 update every hour