我是靠谱客的博主 儒雅荔枝,最近开发中收集的这篇文章主要介绍分布式任务调度quartz:dailyTimeIntervalTrigger和calendarTimeIntervalTrigger,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

记录生活每一天:
分布式任务调度quartz:
在这里插入图片描述
主要是针对于两个不常用触发器 dailyTimeIntervalTrigger和calendarTimeIntervalTrigger的解释和运用。
其余的都不用解释了。

一、dailyTimeIntervalTrigger:

1、指定每天的某个时间段内,以一定的时间间隔执行任务。并且它可以支持指定星期。

2、他适合的需求类似于:一个任务每天9点开始执行,下午5点执行完毕,每个一小时执行一次,并且只有周一到周四执行。

3、它的属性有:

startTimeOfDay 每天开始时间
endTimeOfDay 每天结束时间
daysOfWeek 需要执行的星期
interval 执行间隔
repeatCount 重复次数
4、例子:

// 需求:我想这个任务每天9点开始执行,下午5点执行完毕,每隔一个小时执行一次,周一到周四执行
Trigger trigger = TriggerBuilder.newTrigger()
	.withIdentity("trigger1", "group1")
	.withSchedule(DailyTimeIntervalScheduleBuilder
		.dailyTimeIntervalSchedule() // 使用dailyTimeIntervalSchedule
		.startingDailyAt(TimeOfDay.hourAndMinuteOfDay(9, 0)) // 设置开始时间,从九点开始
		.endingDailyAt(TimeOfDay.hourAndMinuteOfDay(17, 0)) // 设置结束时间,下午五点结束
		.withIntervalInHours(1) // 每一小时执行一次
		.withRepeatCount(14) // 一共执行14次(实际执行14+1次)
		.onDaysOfTheWeek(Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY) // 周一到周四执行。不写即每天执行
	).build();

二、CalendarIntervalTrigger

1、类似于SimpleTrigger,指定从某一个时间开始,以一定的时间间隔执行的任务。 但是不同的是SimpleTrigger指定的时间间隔为毫秒,没办法指定每隔一个月执行一次(每月的时间间隔不是固定值)。
CalendarIntervalTrigger在SimpleScheduleBuilder基础上实现了秒,分钟,小时,天,月,年,星期等事件段的间隔。

WithInterval:指定要生成触发器的间隔和时间单位。
WithIntervalInHours:指定要生成触发器的间隔按小时来
WithIntervalInMinutes:指定要生成触发器的间隔按分钟来
WithIntervalInSeconds:指定要生成触发器的间隔按秒来
WithIntervalInDays:指定要生成触发器的间隔按日来
WithIntervalInWeeks:指定要生成触发器的间隔按周来
WithIntervalInMonths:指定要生成触发器的间隔按月来
WithIntervalInYears:指定要生成触发器的间隔按年来

2、相较于SimpleTrigger有两个优势:1、更方便,比如每隔1小时执行,你不用自己去计算1小时等于多少毫秒。 2、支持不是固定长度的间隔,比如间隔为月和年。但劣势是精度只能到秒。

3、CalendarIntervalTrigger的优势:支持固定长度的间隔,如:每周/每月执行一次。

4、例子:

 Trigger trigger = TriggerBuilder.newTrigger()
	.withIdentity("trigger1", "group1")
	.withSchedule(CalendarIntervalScheduleBuilder
			.calendarIntervalSchedule()
			.WithInterval(1, IntervalUnit.Millisecond)
			.withIntervalInMonths(1) // 每月执行一次
			.WithIntervalInSeconds(1)                                                       
			.WithIntervalInMinutes(1)                                                    
			.WithIntervalInHours(1)                                                     
			.WithIntervalInDays(1)                                                       
			.WithIntervalInWeeks(1)                                                         
			.WithIntervalInMonths(1)                                                          
			.WithIntervalInYears(1))
	).build();

转载自:https://zhuanlan.zhihu.com/p/38124817

最后

以上就是儒雅荔枝为你收集整理的分布式任务调度quartz:dailyTimeIntervalTrigger和calendarTimeIntervalTrigger的全部内容,希望文章能够帮你解决分布式任务调度quartz:dailyTimeIntervalTrigger和calendarTimeIntervalTrigger所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部