You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Burkard Stephan <St...@visana.ch> on 2020/09/08 14:59:45 UTC
Extend CronScheduledRoutePolicy
Hi
I configured a route with CronScheduledRoutePolicy to stop every afternoon at 6pm and start the following morning again at 4am (because a downstream system is not available). Works fine so far.
Now, what if my component is deployed at 8pm? The route starts, the cron trigger is already passed.
I found this old thread where my problem is discussed:
http://camel.465427.n5.nabble.com/CronScheduledRoutePolicy-td4552324.html
I took the same road to solve this "edge case": I set the route to ".noAutoStart()" and quickly tried to extend CronScheduledRoutePolicy.
In the onInit method I retrieve the configured start and stop triggers, compare their next fire dates and decide if the route should be started or not. [At the moment I leave suspend and resume triggers aside]
But now, how can I start the route if needed? The consumer is still null at this time.
Am I in the wrong method to do this?
Or can I use ".autoStartup(bool)", set it by default to false and somehow set the flag to true at this early stage?
I even found an event-notifier-solution in this answer on SO:
https://stackoverflow.com/a/21759153/8035582
Is this the best way to go? To subscribe to CamelContextStart and start the route if needed? Or is this a too "expensive" solution?
Probably isEnabled(EventObject eventObject) could be used to filter the Event types to subscribe to.
Thanks for any hints
Stephan