I need to poll after deployment immediately i.e 0 seconds and then for every 45 mins using cron
Should poll as follows:: 00:00, 00:45, 1:30,2:15,3:00 and so on
I need to poll after deployment immediately i.e 0 seconds and then for every 45 mins using cron
Should poll as follows:: 00:00, 00:45, 1:30,2:15,3:00 and so on
On
CRON expression to poll every 45 minutes, this will solve ur first problem.
0 0/45 * 1/1 * ? *
Running once immediately after the deployment can't be handled with "Poll" as far as I know. As a workaround, in addition to the Poll component above, create another flow with "QUARTZ Inbound Endpoint" and it has a repeatCount attribute which you can set it to "Zero"(this will run exactly once and won't repeat itself).
On
Why do you have to use cron?
Your best bet in this case is to not use cron, rather use Mule's in-built fixed-frequency scheduler:
Note how the the default delay is "0" which means that it will run immediately upon deployment, then will run every 45 minutes after.
Here is the configuration-xml:
...
<flow name="polling-frequency-example-flow"
processingStrategy="synchronous">
<poll doc:name="poll-every-forty-five-mins">
<fixed-frequency-scheduler frequency="45" timeUnit="MINUTES"/>
</poll>
<!-- Do Something -->
</flow>
...
On
Simply use the fixed frequency scheduler construct as stated by @Mooz and then get the current time, check if it is a Sunday and do not process if it is. A cron expression is not really directly intended to handle all of the constraints of running immediately, a frequency relative to starting time rather than a clock schedule, and a day scheduling even with Mule's extensions to cron. Other solutions would be to use two controllers, but this would seem cleaner to me.
I don't know how to poll in Mule, but I can help you with your cron schedule.
Cron doesn't support every-45-minutes. You'll have to break it into three cronjobs:
0,45 0-23/3 * * *30 1-23/3 * * *15 2-23/3 * * *