Publisher Throttling Through Delay Properties

Universal Messaging supports publisher throttling (delay) through delay properties when a JMS or non-JMS channel stores events sent by publishers, and an asynchronous subscriber to the channel has a slow network connection. The subscriber is unable to keep up with the rate of sent events, and Universal Messaging delays the sending of more messages.

Publisher throttling can occur in the following scenarios:

  • The average size of the internal queue of events the server maintains exceeds the value of the QueueLowWaterMark property configured by the client. In this case, the time that the server delays publishers’ messages to a channel is equal to the value of the PublishDelay property.
  • For JMS channel connections, the size of the internal queue of events the server maintains exceeds the value of the QueueHighWaterMark property configured by the client. In this case, the time that the server delays publishers’ messages is calculated based on the value of the PeakPublishDelay property.
  • The size of the subscriber queue that stores events received from the server before performing a callback to the registered event listeners reaches the value of the HighWaterMark property configured by the client. In this case, the subscription is suspended, which enables the event listener to catch up and control the amount of memory used on the client. The server considers the subscriber as a connection in recovery and delays publishers to the channel until the number of such connections reaches zero. The delay time is calculated based on the value of the PeakPublishDelay property.

Universal Messaging logs throttling messages into installation_directory\UniversalMessaging\server\InstanceName\data\nirvana.log and installation_directory \UniversalMessaging\server\InstanceName\data\traceLogging\ChannelName\trace.log.