Запланируйте работу каждый час от 50 до 60 минут один раз - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь использовать @Schedule весной с, и я хотел бы знать, есть ли возможность использовать cron для запуска каждый час один раз между минутами 50 и 59, например: он будет работать: 13:58, 14:52, 15:57 16:50 и т. д. *

спасибо

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Вы можете использовать RandomValuePropertySource из Spring

Попробуйте:

@Scheduled(cron='0 ${random.int[0,9]} * 1/1 * *')
0 голосов
/ 05 июля 2018

См. Этот пример:

0 50-59/1 * * *

Из справочной страницы crontab, раздел 5:

       field         allowed values
       -----         --------------
       minute        0-59
       hour          0-23
       day of month  1-31
       month         1-12 (or names, see below)
       day of week   0-7 (0 or 7 is Sun, or use names)

 A field may be an asterisk (*), which always stands for ``first-last''.

 Ranges of numbers are allowed.  Ranges are two numbers separated with a hyphen.  The specified range is inclusive.  For example, 8-11 for an
 ``hours'' entry specifies execution at hours 8, 9, 10 and 11.

 Lists are allowed.  A list is a set of numbers (or ranges) separated by commas.  Examples: ``1,2,5,9'', ``0-4,8-12''.
0 голосов
/ 05 июля 2018

Как насчет

0 55 * 1/1 * ? *

cronmaker.com всегда был для меня хорошим ресурсом для генерации выражений cron.

Я думаю, @Scheduled принимает только статические выражения cron, и вы не должны использовать SpEL в выражении.

Однако вы можете реализовать пользовательский Trigger. Вместе с выполняемой задачей этот триггер можно зарегистрировать, внедрив SchedulingConfigurer в свой класс @Configuration, используя ScheduledTaskRegistrar.addTriggerTask.

...