Spring Scheduler не запускался во время летнего времени - PullRequest
1 голос
/ 12 ноября 2019

В нашем приложении Java у нас есть планировщик Spring, и его конфигурация указана ниже:

<task:scheduled-tasks>
        <task:scheduled ref="myHealthCheck" method="getStatus" cron="0 0/5 * * * *"/>
</task:scheduled-tasks>

Во время окончания летнего времени 3 ноября планировщик (который запускается каждые 5 минут) не работал в течение одного часа. Может ли кто-нибудь помочь справиться с этим во время начала и конца летнего времени?

Спасибо, Шаан

1 Ответ

0 голосов
/ 12 ноября 2019

Это может быть связано с настройкой часового пояса. Какой часовой пояс по умолчанию вашего хоста? Попробуйте запустить System.out.println(TimeZone.getDefault()) для проверки.

Если часовой пояс по умолчанию не поддерживает DST (например, UTC), вы можете установить правильный часовой пояс для всей JVM, передав системное свойство:

-Duser.timezone=Europe/Kiev

Кроме того, вы можете указать часовой пояс для запланированной задачи напрямую.

К сожалению, Spring Task XSD не имеет свойства для определения часового пояса (http://www.springframework.org/schema/task/spring-task-4.3.xsd).

Но вы можете использовать аннотации. Начиная с Spring 4, аннотация @Scheduled имеет новый атрибут zone (https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling-annotation-support-scheduled):

. Вы также можете использовать атрибут zone, чтобы указать часовой пояс. в котором разрешено выражение cron.

@Scheduled(cron="*/5 * * * * MON-FRI", zone="Europe/Kiev")
public void doSomething() {
    // something that should execute on weekdays only
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...