The Timer Swiftlet manages the 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 an 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
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 than the previous measured time or b) if the current time is greater than
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
nnnnn is a millisecond value.
The configuration of the Timer Swiftlet is defined within the element
<swiftlet name="sys$timer" .../>
of the router's configuration file.
Attributes of Element "swiftlet"