Quartz使用技巧总结

来源:互联网 发布:全国汽车保有量数据 编辑:程序博客网 时间:2024/05/22 14:38

一、Quartz 是一个很好的定时器框架,并且支持集群技术。

集群示意图

它的定时任务的配置信息默认是保存在内存中的,这个可以从它的框架默认配置quartz.properties中看出:org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

你也可以复写quartz.properties,改变默认配置将定时任务配置信息写入数据库,我的配置:

</pre><pre name="code" class="html">#============================================================================# Configure JobStore  #============================================================================org.quartz.jobStore.misfireThreshold = 60000org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTXorg.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegateorg.quartz.jobStore.useProperties = falseorg.quartz.jobStore.dataSource = myDSorg.quartz.jobStore.tablePrefix = QRTZ_org.quartz.jobStore.isClustered = true#============================================================================# Configure Datasources  #============================================================================org.quartz.dataSource.myDS.driver = com.kingbase.Driverorg.quartz.dataSource.myDS.URL = jdbc:kingbase://localhost:54321/nudtbpm?ClientEncoding=GBKorg.quartz.dataSource.myDS.user = SYSTEMorg.quartz.dataSource.myDS.password = MANAGERorg.quartz.dataSource.myDS.maxConnections = 5

Quartz 有自己的12张表:可以参考它的sql文件:quartz-1.8.6\docs\dbTables文件夹中可以找到.


二、怎么开始一个简单的定时任务?

public static void main(String[] args) {// TODO Auto-generated method stubtry {Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();// define the job and tie it to our HelloJob class        JobDetail job = new JobDetail("first-quartz-job2", "default", Class.forName("nudt.bpm.dummy.MyJobTest"));//这里配置了一个执行任务的类        // Trigger the job to run now, and then repeat every 10 seconds        CronTrigger trigger = new CronTrigger("first-quartz-job2", "default");//任务触发器        CronExpression croE = new CronExpression("0/10 * * * * ?");//Cron表达式,网上有很多详细的介绍,不懂的同学可以查阅        trigger.setCronExpression(croE);                // Tell quartz to schedule the job using our trigger        scheduler.scheduleJob(job, trigger);//将任务计划持久化到数据库        scheduler.start();//开始任务计划//        scheduler.pauseTrigger("first-quartz-job", "default");//        scheduler.pauseJob("first-quartz-job", "default");//        scheduler.deleteJob("first-quartz-job", "default");//删除任务//        scheduler.resumeTrigger("first-quartz-job", "default");//        scheduler.resumeJob("first-quartz-job", "default");//手工启动任务//        Thread.sleep(30000);} catch (SchedulerException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} //catch (InterruptedException e) {// TODO Auto-generated catch block//e.printStackTrace();//}}

这里也把我的执行任务类简单罗列出来,以供参考:

public class MyJobTest extends QuartzJobBean{/*@Overridepublic void execute(JobExecutionContext arg0) throws JobExecutionException {// TODO Auto-generated method stubSystem.out.println("job execte...time is:"+new Date());}*/@Overrideprotected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {// TODO Auto-generated method stubSystem.out.println("job execte...time is:"+new Date());}}

参考:http://shmilyaw-hotmail-com.iteye.com/blog/2169156

http://www.blogjava.net/stevenjohn/archive/2015/07/23/426393.html

1 0
原创粉丝点击