@特定时间间隔的计划注释

时间:2019-05-08 21:19:11

标签: spring spring-boot quartz-scheduler

我想安排一个工作每年只运行一个月(可配置),并且应该每天在特定时间运行(比如说UTC每天01:00 AM)。我们可以使用@Schedule注释在springboot中实现吗?如果没有,实现这一目标的最佳方法是什么?  我在下面尝试过

df_mini.coalesce(1)\
   .write\
   .format('com.databricks.spark.csv')\
   .options(header='true', delimiter='\t')\
   .save('gdrive/My Drive/base_mini.csv')

每天运行1点,但是我希望它在5月10日开始运行,并在6月10日停止运行。该开始时间和结束时间应该是可配置的,这样我以后就可以更改它而无需更改代码

1 个答案:

答案 0 :(得分:1)

我建议以下内容之一:

public class Scheduler{

@Value("${your.start.date}")
private String startDate;

@Value("${your.end.date}")
private String endDate;

@Scheduled(cron = "0 0 1 1/1 * ? *")
public void do()
{
    ZonedDateTime startDate = ZonedDateTime.parse(startDate);
    ZonedDateTime endDate = ZonedDateTime.parse(endDate);
    if(ZonedDateTime.now().isAfter(startDate) && ZonedDateTime.now().isBefore(endDate)){
        //do your job here
    }
    //do nothing if condition is not meet
}

}