介紹
CronUtil通過一個全局的定時任務配置文件,實現統一的定時任務調度。
使用
1、配置文件
1.1 pom文件
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.1.0</version> </dependency>
1.2
對於Maven項目,首先在src/main/resources/
下創建config包,在包中放入cron.setting文件(默認是這個路徑的這個文件),
然后在文件中放入定時規則,規則如下:
# 我是注釋 #執行的類或對象方法所在包的名字 [com.web.kds.hadoop_kafka.TimingTask] #需要執行的類名和方法名 cron.test1 =* */1 * * * cron.test2 =* */1 * * * #執行的類或對象方法所在包的名字 [com.web.kds.hadoop_kafka.image] #需要執行的類名和方法名 WaterMarkUtils.test3 =* */1 * * *
[com.web.kds.hadoop_kafka.TimingTask]:
中括號表示分組,也表示需要執行的類或對象方法所在包的路徑名字,這種寫法有利於區分不同業務的定時任務。
cron.test1
表示需要執行的類名和方法名(通過反射調用),* */1 * * * 表示定時任務表達式,此處表示每1分鍾執行一次,以上配置等同於:
com.web.kds.hadoop_kafka.TimingTask.cron.test1 =* */1 * * *
com.web.kds.hadoop_kafka.TimingTask.cron.test2 =* */1 * * *
com.web.kds.hadoop_kafka.image.WaterMarkUtils.test3 =* */1 * * *
2.測試代碼
3.啟動/關閉
CronUtil.start();//啟動
CronUtil.stop();//關閉
考慮到Quartz表達式的兼容性,且存在對於秒級別精度匹配的需求,Hutool可以通過設置使用秒匹配模式來兼容。
//支持秒級別定時任務 CronUtil.setMatchSecond(true);
此時Hutool可以兼容Quartz表達式(5位表達式、6位表達式都兼容/6位精確到秒)
3.效果