Expose Quartz underlying configuration in Quarkus/quartz for perfomance tuning
See original GitHub issueCurrently we are using Quarkus/quartz cluster mode with store-type: jdbc_tx
, in a situations where the scheduler has very large numbers of triggers that need to be fired at or near the same time.
Per quartz official documentation http://www.quartz-scheduler.org/documentation/quartz-2.3.0/configuration/ConfigMain.html#configuration-reference the performance expected to improve by setting:
org.quartz.scheduler.batchTriggerAcquisitionFireAheadTimeWindow
(the larger the number, the more efficient firing is (in situations where there are very many triggers needing to be fired all at once)
org.quartz.scheduler.batchTriggerAcquisitionMaxCount
(the larger the number, the more likely batch acquisition of triggers to fire will be able to select and fire more than 1 trigger at a time)
org.quartz.jobStore.acquireTriggersWithinLock
(to avoid data corruption).
But Quarkus/quartz does not expose these properties as configurable. Would it be possible to expose the underlying default quartz configuration so that we can leverage the quartz batch mode?
Quartz provides these configurations: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/configuration/ConfigMain.html And Quarkus/Quartz provides these: https://quarkus.io/guides/quartz#quartz-configuration-reference
Issue Analytics
- State:
- Created 10 months ago
- Comments:5 (4 by maintainers)
Seems reasonable to me
Thanks @fikrutm
The configuration could be declared in https://github.com/quarkusio/quarkus/blob/main/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzRuntimeConfig.java
The way it was done for https://github.com/quarkusio/quarkus/blob/main/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzRuntimeConfig.java#L22-L32 could be used as inspiration. The key thing to ensure is that the default value respects the current default behavior so that we do not break existing functionality.
As for property naming:
Are okay names to me. Ensure that the declared configuration are properly commented as they are used as documentation.
If this is your first time contributing to the repo, I’d suggest you to have a quick look at https://github.com/quarkusio/quarkus/blob/main/CONTRIBUTING.md