Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Cron scheduler “disable pattern”

My application loads some cron patterns from a properties file. I'm using the @Scheduled annotation like this:

@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")

Now I want to disable some tasks and the easiest solution would be to enter a cron pattern which will never run. In order to do this, I thought about using a cron expression that only executes at a specific day in the past. But unfortunately the Spring cron expressions don't allow to add a year or a date in the past.

Is there any pattern that will never run?

like image 217
eztam Avatar asked Apr 04 '16 13:04

eztam


2 Answers

As of Spring 5.1.0 the @Scheduled annotation can accept "-" as the cron expression to disable the cron trigger.

Per the Javadocs:

The special value "-" indicates a disabled cron trigger, primarily meant for externally specified values resolved by a ${...} placeholder.

like image 159
M. Justin Avatar answered Oct 15 '22 07:10

M. Justin


If it was a cron expression (NOT spring scheduler), you could have used below which makes the cron run on 2099

59 59 23 31 12 ? 2099

But spring scheduler does not take a year as input. This is what I have found to defer it for some extended period. Below will run on 29 Feb which will be a leap year.

0 0 0 29 2 ?
like image 7
vsingh Avatar answered Oct 15 '22 06:10

vsingh