High Quality JMS Messaging.

Introduction

The Timer Swiftlet manages internal timers of a SwiftMQ router.

Minimum / Maximum Delay

There are 2 attributes in the Timer Swiftlet's configuration which can be configured.

The first is "min-delay". It specifies the number of milliseconds the internal dispatcher has to wait at a minimum before it checks its dispatch queue to fire outstanding timers. This delay is useful to avoid very short delays such as 1 millisecond. These very short delays can have impact on CPU usage so it is recommended to use the default value of 100 milliseconds here. The dispatcher then waits at least this amount of time and fires all outstanding timers at once.

The second attribute is "max-delay". It specifies the number of milliseconds the dispatcher waits at a maximum to check its dispatch queue. This delay avoids that the dispatcher waits too long in case the system time has been changed while the router is running, for example, due to summer / winter time changes. The default value is 10 seconds (10000 milliseconds), so the dispatcher checks its dispatch queue at least every 10 seconds for outstanding timers.

System Time Changes (release 7.6.0 and up)

The Timer Swiftlet is able to detect system time changes, e.g. due to NTP synchronization or Summer / Winter time changes.

Definition: The system time has changed a) if the current time is less the previous measured time or b) if the current time is greater than "max-delay"+1000.

In this case the delta between current and previous time is applied to all timers not marked as absolute timers, the internal timer task queue is reordered, and the following line is written to the info.log:

      System time has changed (delta=nnnnn), reordering timer task queue

where "nnnnn" is a millisecond value.