The Camel Timer Endpoint uses java.util.Timer
.
If you set the fixedRate
flag to true
the following method is used :
java.util.Timer#scheduleAtFixedRate(java.util.TimerTask, java.util.Date, long)
Otherwise the following method is used :
java.util.Timer#schedule(java.util.TimerTask, java.util.Date, long)
If I understand the Javadoc of the Timer class a fixed-rate execution does not care about the execution time of the previous execution, only of the initial execution.
An example to clarify :
Take a timer with a fixed-rate execution with an initial execution at 12:00 and a period of 1 hour. The timer will (try to) start a third execution at 14:00 - even if, for some reason, the execution which should have started at 13:00 was delayed and actually started at 13:06.
If the timer did not have a fixed-rate execution it would (try to) start the third execution at 14:06.