Spring Scheduler在DST期间未运行

在我们的Java应用程序中,我们具有Spring调度程序,其配置如下所示:

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

DST在11月3日结束期间,调度程序(每5分钟运行一次)没有运行一小时。在DST开始和结束期间可以帮助您解决这一问题吗?

谢谢 陕

bjj43h 回答:Spring Scheduler在DST期间未运行

这可能与时区配置有关。 您的主机的默认时区是什么?尝试运行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)的属性。

但是您可以使用注释。从春季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
}
本文链接:https://www.f2er.com/3120153.html

大家都在问