Spring Quartz 参数说明[亲测有效]

Spring Quartz 参数说明[亲测有效]JobDetailJobDetail用来保存我们作业的详细信息。一个JobDetail可以有多个Trigger,但是一个Trigger只能对应一个JobDetail。下面是JobDetail的一些常用的属性和含义如: JobDataMap这是一个给作业提供数据支持的数据结构,使用方法和Java.util.Map一样,非常

大家好,欢迎来到IT知识分享网。

JobDetail

JobDetail 用来保存我们作业的详细信息。一个JobDetail可以有多个Trigger,但是一个Trigger只能对应一个JobDetail。下面是JobDetail的一些常用的属性和含义

Spring Quartz 参数说明[亲测有效]

如:

<bean id="myjob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    	<property name="jobClass" value="com.tgb.lk.demo.quartz.MyJob1" />
		<property name="durability" value="true" />
	</bean>

JobDataMap

这是一个给作业提供数据支持的数据结构,使用方法和Java.util.Map一样,非常方便。当一个作业被分配给调度器时,JobDataMap实例就随之生成。

Job有一个StatefulJob子接口,代表有状态的任务,该接口是一个没有方法的标签接口,其目的是让Quartz知道任务的类型,以便采用不同的执行方案。无状态任务在执行时拥有自己的JobDataMap拷贝,对JobDataMap的更改不会影响下次的执行。而有状态任务共享共享同一个JobDataMap实例,每次任务执行对JobDataMap所做的更改会保存下来,后面的执行可以看到这个更改,也即每次执行任务后都会对后面的执行发生影响。

正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行,这意味着如果前次的StatefulJob还没有执行完毕,下一次的任务将阻塞等待,直到前次任务执行完毕。有状态任务比无状态任务需要考虑更多的因素,程序往往拥有更高的复杂度,因此除非必要,应该尽量使用无状态的Job。

如果Quartz使用了数据库持久化任务调度信息,无状态的JobDataMap仅会在Scheduler注册任务时保持一次,而有状态任务对应的JobDataMap在每次执行任务后都会进行保存。

JobDataMap实例也可以与一个触发器相关联。这种情况下,对于同一作业的不同触发器,我们可以在JobDataMap中添加不同的数据,以便作业在不同时间执行时能够提供更为灵活的数据支持(学校上午放眼保健操录音第一版,下午放第二版)。

不管是有状态还是无状态的任务,在任务执行期间对Trigger的JobDataMap所做的更改都不会进行持久,也即不会对下次的执行产生影响。

触发器(Trigger)

Trigger是一个抽象类,Quartz提供了两个比较常用的触发器SimpleTrigger和CronTrigger。它们都是Trigger的子类

SimpleTrigger

这是一个简单的触发器,通过它我们可以定义触发的时间,并选择性的设定重复的次数和间隔时间。它有以下常用的属性

Spring Quartz 参数说明[亲测有效]

如:

<!-- 配置一个触发器 --><bean id="hotWaterTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"><property name="jobDetail" ref="hotWaterTask"></property><property name="startDelay" value="3600000"></property><property name="repeatInterval" value=" 3600000"></property></bean>

CronTrigger

这个触发器的功能非常强大,而且非常灵活,但需要掌握有关的Cron表达式知识

Spring Quartz 参数说明[亲测有效]

如:

<!-- 配置一个触发器 --><bean id="startWorkTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="startWorkTask"></property><property name="cronExpression" value="0 * 13 * * ?"></property> <!--每天的下午1点的每分钟的0秒都执行一次-->

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/26374.html

(0)
上一篇 2023-04-10 17:00
下一篇 2023-05-07 14:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信