Quartz Trigger

Quartz中一个Job往往是一个任务业务逻辑的实现,Job并不知道何时被执行。执行一个Quartz Job的是一个Trigger实例。Trigger(触发器)的责任就是触发一个 Job 去执行。当用 Scheduler 注册一个 Job 的时候要创建一个 Trigger 与这个 Job 相关联。Quartz 触发器继承了Quartz框架中的org.quartz.Trigger类:

public abstract class Trigger implements java.io.Serializable, Cloneable, Comparable {}

public class SimpleTrigger extends Trigger {}

public class NthIncludedDayTrigger extends Trigger {}

public class CronTrigger extends Trigger {}


org.quartz.SimpleTrigger:

通过构造方法:

		SimpleTrigger simpleTrigger = new SimpleTrigger("trigger", "tgroup");
		simpleTrigger.setRepeatInterval(1000);
		simpleTrigger.setRepeatCount(10);
		scheduler.scheduleJob(jobDetail, simpleTrigger);

通过TriggerUtils的静态方法实例化:

		Trigger t=TriggerUtils.makeSecondlyTrigger(10);
		t.setName("trigger");
		t.setStartTime(new Date());
		scheduler.scheduleJob(jobDetail, t);

org.quartz.CronTrigger:

SimpleTrigger 对于需要在指定的毫秒处及时执行的作业还是不错的,但要处理更为复杂都执行计划时,CronTrigger 就显得更加灵活了,

通过构造方法

		CronTrigger trigger=new CronTrigger("crontrigger",Scheduler.DEFAULT_GROUP,"* * * * * ?");
//		trigger.getJobDataMap().put("str", "Trigger-world");
		scheduler.scheduleJob(jobDetail, trigger);

通过xml:

<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
	xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
	version="1.8">
	<schedule>
		<job>
			<name>hello</name>
			<group>group</group>
			<job-class>org.han.jobs.XLSJob</job-class>
		</job>
		<trigger>
			<cron>
				<name>trigger</name>
				<group>group</group>
				<job-name>hello</job-name>
				<job-group>group</job-group>
				<cron-expression>0 0 0 ? * *</cron-expression>
			</cron>
		</trigger>
	</schedule>
</job-scheduling-data>

#===============================================================     
#Configure Main Scheduler Properties     
#===============================================================      
org.quartz.scheduler.instanceName = QuartzScheduler      
org.quartz.scheduler.instanceId = AUTO     
 
#===============================================================     
#Configure ThreadPool     
#===============================================================      
org.quartz.threadPool.threadCount = 5      
org.quartz.threadPool.threadPriority = 5      
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool     
 
#===============================================================     
#Configure JobStore     
#===============================================================      
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore     
 
#===============================================================     
#Configure Plugins     
#===============================================================      
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin     
 

#fileNames对应上面的xml文件名    
org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown =true



org.quartz.NthIncludedDayTrigger:

org.quartz.NthIncludedDayTrigger是Quartz开发团队在Quartz框架中新添加的一个触发器。它设计的目标是提供不同时间间隔的第n天执行时刻表。

		NthIncludedDayTrigger ndt = new NthIncludedDayTrigger();
		ndt.setName(jd.getName()+"-Trigger");
		ndt.setIntervalType(NthIncludedDayTrigger.INTERVAL_TYPE_WEEKLY);
		ndt.setN(Calendar.MONDAY);
		ndt.setFireAtTime("12:00:00");
		
		Calendar c = Calendar.getInstance();
		ndt.setStartTime(c.getTime());


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值