On 7/20/21 5:23 PM, Paul McCulloch wrote:
You could use JMS. For each report define a route from timer/quartz to a
JMS queue - perhaps setting the query or the report name as the body.
You could have a single report execution route reading from the JMS queue,
and then executing the report defined in the message.
The problem here is that each report might have a different
post-processing pipeline, which is—as far as I know, this decision was
taken 8 years ago—why they were created as separate routes.
Still I like this approach and if the other approach, a custom
scheduledExecutionService, won't work, I'll revisit it.
Use concurrentConsumers to control concurrency. You probably need to
specify a prefetchPolicy for the JMS consumer to ensure reports *are* run
in parallel.
Thank you for your suggestion! The prefetchPolicy is something I was
unaware of.
--
Tomasz Melcer