Am using a camel file consumer within a cluster to poll files on a periodic
basis. I wish to ensure that a consumer will only poll files if it has an
exclusive read lock on them so using the
QuartzScheduledPollConsumerScheduler with a readLock=idempotent read lock
strategy backed by a JdbcMessageIdRepository idempotentRepository.

I wanted to confirm that such an approach will ONLY work correctly in
cluster PROVIDED a unique triggerId is also assigned (ie assigned via use of
the QuartzScheduledPollConsumerScheduler scheduler.triggerId option)?

As where scheduler.triggerId is NOT assigned then a UUID is generated and a
unique job/trigger is created for EACH node resulting in > 1 file consumers
poll starting simultaneously.
For example in a cluster of two nodes with auto assigned UUID triggerId,
then two jobs will trigger against only one node each or both jobs against
one node. That scenario seems wrong in a cluster. 

BUT if a unique scheduler.triggerId is specified then only one job/trigger
will exist in DB and so quartz can ensure that the triggered job will only
ever work against one of the nodes at a time. That does seem to be the
desired behaviour.

So adopting the use of a scheduler.triggerId based approach does seem valid
but it does raise a question concerning the removal of the DB triggers/jobs
upon camel context shut down in a cluster so I wanted to check my
understanding before following up on that.




--
View this message in context: 
http://camel.465427.n5.nabble.com/QuartzScheduledPollConsumerScheduler-cluster-and-scheduler-triggerId-tp5789575.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to