春天计划任务的cron表达式验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了春天计划任务的cron表达式验证相关的知识,希望对你有一定的参考价值。

我正在写一个计划任务,需要每个月的第1个星期六运行.我想出了这个。

@Scheduled(cron = "0 0 23 1-7 * SAT")
// Runs on 1st Saturday of each month at 23:00
public void CleanUpScheduledTask() 

我是怎么想出来的呢?

0 0 23 意思是每天晚上11点

1-7 * 即每月1-7日

SAT 星期六

你建议如何确保上述表达式有效? 我如何测试这样的功能?

谢谢你的帮助。

答案

1. 构建Cron表达式

使用Spring cron工作表达式

@Scheduled(cron = "[Seconds] [Minutes] [Hours] [Day of month] [Month] [Day of week] [Year]")

NB年字段是可选的

  • # 用于指定任务开始的星期和星期。

    例如,每个月的第一个星期六(7#1)

  • ? 不代表特定的值,可用于月日或星期日字段。

  • * 代表所有数值

因此,Cron表达式变成了

@Scheduled(cron = "0 0 23 ? * 7#1")

2. 测试Cron作业

  • 使用 Awaitility dependency

      <dependency>
         <groupId>org.awaitility</groupId>
         <artifactId>awaitility</artifactId>
         <scope>test</scope>
      </dependency>
    

-使用 Spring Integration testing

@SpringJUnitConfig(CleanScheduler.class)
public class CleanSchedulerUnitTest 
    @Autowired
    private CleanScheduler cleanScheduler;

    @Test
    void cleanUpScheduledTaskShouldReturnSuccess() 
       //Act
        cleanScheduler.cleanUpScheduledTask();
      //Assertions
    

以上是关于春天计划任务的cron表达式验证的主要内容,如果未能解决你的问题,请参考以下文章

cron 任务执行表达式

Spring的定时任务 cron表达式

Go cron定时任务的用法

.NET平台开源项目之Cron任务调度CronNET

cron定时器插件使用

xxl-job中的cron表达式详解