- 浏览: 984717 次
文章分类
- 全部博客 (428)
- Hadoop (2)
- HBase (1)
- ELK (1)
- ActiveMQ (13)
- Kafka (5)
- Redis (14)
- Dubbo (1)
- Memcached (5)
- Netty (56)
- Mina (34)
- NIO (51)
- JUC (53)
- Spring (13)
- Mybatis (17)
- MySQL (21)
- JDBC (12)
- C3P0 (5)
- Tomcat (13)
- SLF4J-log4j (9)
- P6Spy (4)
- Quartz (12)
- Zabbix (7)
- JAVA (9)
- Linux (15)
- HTML (9)
- Lucene (0)
- JS (2)
- WebService (1)
- Maven (4)
- Oracle&MSSQL (14)
- iText (11)
- Development Tools (8)
- UTILS (4)
- LIFE (8)
最新评论
-
Donald_Draper:
Donald_Draper 写道刘落落cici 写道能给我发一 ...
DatagramChannelImpl 解析三(多播) -
Donald_Draper:
刘落落cici 写道能给我发一份这个类的源码吗Datagram ...
DatagramChannelImpl 解析三(多播) -
lyfyouyun:
请问楼主,执行消息发送的时候,报错:Transport sch ...
ActiveMQ连接工厂、连接详解 -
ezlhq:
关于 PollArrayWrapper 状态含义猜测:参考 S ...
WindowsSelectorImpl解析一(FdMap,PollArrayWrapper) -
flyfeifei66:
打算使用xmemcache作为memcache的客户端,由于x ...
Memcached分布式客户端(Xmemcached)
Quartz使用总结:http://www.cnblogs.com/drift-ice/p/3817269.html
quartz.properties配置:http://orange5458.iteye.com/blog/1170777
quartz集群调度机制调研及源码分析:http://www.cnblogs.com/davidwang456/p/4205237.html
深入解读Quartz的原理:http://lavasoft.blog.51cto.com/62575/181907/
quartz源码解析:http://www.cnblogs.com/davidwang456/p/3878625.html
任务调度开源框架Quartz动态添加、修改和删除定时任务 :http://www.tuicool.com/articles/Ff6F7v
新建JOb
Job监听器:
简单触发器测试:
CronTrigger触发器测试:
上面两个测试类只是测试触发器种类不同而已,使劲处理的job是相同的
测试结果:
九月 05, 2016 9:41:00 上午 org.quartz.impl.StdSchedulerFactory instantiate
信息: Using default implementation for ThreadExecutor
九月 05, 2016 9:41:00 上午 org.quartz.simpl.SimpleThreadPool initialize
信息: Job execution threads will use class loader of thread: main
九月 05, 2016 9:41:00 上午 org.quartz.core.SchedulerSignalerImpl <init>
信息: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
九月 05, 2016 9:41:00 上午 org.quartz.core.QuartzScheduler <init>
信息: Quartz Scheduler v.2.2.1 created.
九月 05, 2016 9:41:00 上午 org.quartz.simpl.RAMJobStore initialize
信息: RAMJobStore initialized.
九月 05, 2016 9:41:00 上午 org.quartz.core.QuartzScheduler initialize
信息: Scheduler meta-data: Quartz Scheduler (v2.2.1) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
九月 05, 2016 9:41:00 上午 org.quartz.impl.StdSchedulerFactory instantiate
信息: Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
###如果配置了quartz.properties则从quartz.properties文中加载相关配置信息
九月 05, 2016 9:41:00 上午 org.quartz.impl.StdSchedulerFactory instantiate
信息: Quartz scheduler version: 2.2.1
九月 05, 2016 9:41:00 上午 org.quartz.core.QuartzScheduler start
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
#第一次执行
九月 05, 2016 9:41:00 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:00 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:00 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:00
九月 05, 2016 9:41:00 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:00,计数: 1
九月 05, 2016 9:41:00 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。,状态:正常
#第二次执行, 暂停5秒钟,再恢复
九月 05, 2016 9:41:05 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:05 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:05 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:05,计数: 2
九月 05, 2016 9:41:05 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:05
九月 05, 2016 9:41:05 上午 job.SimpleJob execute
警告: 已经暂停了触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
九月 05, 2016 9:41:05 上午 job.SchedEventLister run
警告: 暂停当前线程5秒钟后在恢复触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
九月 05, 2016 9:41:10 上午 job.SchedEventLister run
警告: 正在恢复了触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
#第三次执行
九月 05, 2016 9:41:10 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:10 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:10 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:10,计数: 3
九月 05, 2016 9:41:10 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:10
九月 05, 2016 9:41:10 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。,状态:正常
#第四次执行
九月 05, 2016 9:41:15 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:15 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:15 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:15,计数: 4
九月 05, 2016 9:41:15 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:15
九月 05, 2016 9:41:15 上午 job.SimpleJob execute
严重: 正在停止并且移除触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
九月 05, 2016 9:41:15 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。,状态:没有触发器
九月 05, 2016 9:43:00 上午 org.quartz.core.QuartzScheduler shutdown
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
九月 05, 2016 9:43:00 上午 org.quartz.core.QuartzScheduler standby
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
九月 05, 2016 9:43:00 上午 org.quartz.core.QuartzScheduler shutdown
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
quartz.properties文件:
#线程池实现类
org.quartz.threadPool.class =org.quartz.simpl.SimpleThreadPool
#线程池数
org.quartz.threadPool.threadCount = 5
#线程池优先级
org.quartz.threadPool.threadPriority = 5
#线程池运行模式守后,还是前台
org.quartz.threadPool.makeThreadsDaemons=false
###线程池配置的继承属性
org.quartz.threadPool.threadsInheritGroupOfInitializingThread=true
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
###保存job调度执行信息到RAM,这种方式当应用下次重启时,job调度信息容易丢失
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.misfireThreshold = 60000
############.JobStoreTX,是将job调度信息保存到RDB中,应用重启时可以重新调度job
#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#org.quartz.jobStore.dataSource=test
#org.quartz.dataSource.test.driver=com.mysql.jdbc.Driver
#org.quartz.dataSource.test.URL=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=utf8&characterSetResults\=utf8
#org.quartz.dataSource.test.user=root
#org.quartz.dataSource.test.password=123456
#org.quartz.dataSource.test.maxConnections=20
quartz.properties配置:http://orange5458.iteye.com/blog/1170777
quartz集群调度机制调研及源码分析:http://www.cnblogs.com/davidwang456/p/4205237.html
深入解读Quartz的原理:http://lavasoft.blog.51cto.com/62575/181907/
quartz源码解析:http://www.cnblogs.com/davidwang456/p/3878625.html
任务调度开源框架Quartz动态添加、修改和删除定时任务 :http://www.tuicool.com/articles/Ff6F7v
新建JOb
package job; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.TriggerKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SimpleJob implements Job { private static int jobCount = 0; Logger log = LoggerFactory.getLogger(SimpleJob.class); @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 此任务仅打印日志便于调试、观察 log.info("==================:"+this.getClass().getName() + " was just triggered..."); JobKey jobKey = context.getJobDetail().getKey(); TriggerKey triggerKey = context.getTrigger().getKey(); Scheduler scheduler = context.getScheduler(); //启动线程监听触发器的状态 new Thread(new SchedEventLister(triggerKey,scheduler)).start(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); log.info("任务分组名称: " + jobKey.getGroup()+",任务名称: " + jobKey.getName()+",触发器组名称: " + triggerKey.getGroup()+ ",触发器名称: "+ triggerKey.getName()+" 执行时间: " + sdf.format(new Date()) + ",计数: " + (++jobCount)) ; //如果任务执行超过15次就结束它 /* if(jobCount > 3){ log.warn("结束任务..."); try { //Delete the identified Job from the Scheduler - and any associated Triggers. //从调度器中删除这个唯一任务时同时会删除相关联的触发器^_^ scheduler.deleteJob(jobKey); } catch (SchedulerException e) { e.printStackTrace(); } }*/ if(jobCount == 2 ){ //暂停触发器 try { scheduler.pauseTrigger(triggerKey); log.warn("已经暂停了触发器...,触发器组名: " + triggerKey.getGroup() + ",触发器名称: " + triggerKey.getName()); } catch (SchedulerException e) { throw new RuntimeException(e); } } if(jobCount == 4){ try { scheduler.pauseTrigger(triggerKey); // 停止触发器 scheduler.unscheduleJob(triggerKey);//移除触发器 scheduler.pauseJob(jobKey);// 停止任务 scheduler.deleteJob(jobKey);// 删除任务 log.error("正在停止并且移除触发器...,触发器组名: " + triggerKey.getGroup() + ",触发器名称: " + triggerKey.getName()); } catch (SchedulerException e) { throw new RuntimeException(e); } } } }
Job监听器:
package job; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SchedEventLister implements Runnable{ private static Logger log = LoggerFactory.getLogger(SchedEventLister.class); private Scheduler sched = null; private TriggerKey triggerKey = null; public SchedEventLister(TriggerKey triggerKey,Scheduler sched) { log.info("触发器线程监听启动...."); this.triggerKey = triggerKey; this.sched = sched; } @Override public void run() { log.info("触发器线程监听中。。。。" + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss") .format(new Date())); // 获取当前触发器的状态 Trigger.TriggerState ts = null; try { ts = sched.getTriggerState(triggerKey); } catch (SchedulerException e) { e.printStackTrace(); } // 如果为暂停状态就恢复 if (ts == Trigger.TriggerState.PAUSED) { // 暂停10秒在恢复 try { log.warn("暂停当前线程5秒钟后在恢复触发器...,触发器组名: " + triggerKey.getGroup() + ",触发器名称: " + triggerKey.getName()); Thread.sleep(5L * 1000L); } catch (InterruptedException e1) { e1.printStackTrace(); } // 恢复触发器 log.warn("正在恢复了触发器...,触发器组名: " + triggerKey.getGroup() + ",触发器名称: " + triggerKey.getName()); try { sched.resumeTrigger(triggerKey); } catch (SchedulerException e) { throw new RuntimeException(e); } } else if (ts == Trigger.TriggerState.NORMAL) { log.info("触发器线程监听中。。。。,状态:正常 "); } else if (ts == Trigger.TriggerState.NONE) { log.info("触发器线程监听中。。。。,状态:没有触发器 "); } else if (ts == Trigger.TriggerState.ERROR) { log.info("触发器线程监听中。。。。,状态:错误 "); } else if (ts == Trigger.TriggerState.BLOCKED) { log.info("触发器线程监听中。。。。,状态:堵塞 "); } } }
简单触发器测试:
package job; import java.util.concurrent.TimeUnit; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class testSimpleTrriger { private static Logger logger = LoggerFactory.getLogger(testSimpleTrriger.class); public static void main(String[] args) { try { // 获取Scheduler实例 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 具体任务 JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("SimpleJob", "Job-Group-Simple").build(); // 触发时间点 SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger", "Trriger-Group-Simple"). startNow().withSchedule(simpleScheduleBuilder).build(); // 交由Scheduler安排触发 scheduler.scheduleJob(job, trigger); scheduler.start(); try { TimeUnit.MINUTES.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 关闭Scheduler scheduler.shutdown(); } catch (SchedulerException se) { logger.error(se.getMessage(), se); } } }
CronTrigger触发器测试:
package job; import java.util.concurrent.TimeUnit; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestCronTrriger { private static Logger logger = LoggerFactory.getLogger(testSimpleTrriger.class); public static void main(String[] args) { try { // 获取Scheduler实例 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler cronScheduler = schedulerFactory.getScheduler(); // 具体任务 JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("SimpleJob", "Job-Group-Simple").build(); // 触发时间点 // 交由Scheduler安排触发 String cronExpression = "0/5 * * * * ?"; // 每分钟的30s起,每5s触发任务 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression); CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger", "Trriger-Group-Simple") .withSchedule(cronScheduleBuilder) .build(); cronScheduler.scheduleJob(job, cronTrigger); cronScheduler.start(); try { /* 为观察程序运行,此设置主程序睡眠2分钟才继续往下运行(因下一个步骤是“关闭Scheduler”) */ TimeUnit.MINUTES.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 关闭Scheduler cronScheduler.shutdown(); } catch (SchedulerException se) { logger.error(se.getMessage(), se); } } }
上面两个测试类只是测试触发器种类不同而已,使劲处理的job是相同的
测试结果:
九月 05, 2016 9:41:00 上午 org.quartz.impl.StdSchedulerFactory instantiate
信息: Using default implementation for ThreadExecutor
九月 05, 2016 9:41:00 上午 org.quartz.simpl.SimpleThreadPool initialize
信息: Job execution threads will use class loader of thread: main
九月 05, 2016 9:41:00 上午 org.quartz.core.SchedulerSignalerImpl <init>
信息: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
九月 05, 2016 9:41:00 上午 org.quartz.core.QuartzScheduler <init>
信息: Quartz Scheduler v.2.2.1 created.
九月 05, 2016 9:41:00 上午 org.quartz.simpl.RAMJobStore initialize
信息: RAMJobStore initialized.
九月 05, 2016 9:41:00 上午 org.quartz.core.QuartzScheduler initialize
信息: Scheduler meta-data: Quartz Scheduler (v2.2.1) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
九月 05, 2016 9:41:00 上午 org.quartz.impl.StdSchedulerFactory instantiate
信息: Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
###如果配置了quartz.properties则从quartz.properties文中加载相关配置信息
九月 05, 2016 9:41:00 上午 org.quartz.impl.StdSchedulerFactory instantiate
信息: Quartz scheduler version: 2.2.1
九月 05, 2016 9:41:00 上午 org.quartz.core.QuartzScheduler start
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
#第一次执行
九月 05, 2016 9:41:00 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:00 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:00 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:00
九月 05, 2016 9:41:00 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:00,计数: 1
九月 05, 2016 9:41:00 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。,状态:正常
#第二次执行, 暂停5秒钟,再恢复
九月 05, 2016 9:41:05 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:05 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:05 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:05,计数: 2
九月 05, 2016 9:41:05 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:05
九月 05, 2016 9:41:05 上午 job.SimpleJob execute
警告: 已经暂停了触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
九月 05, 2016 9:41:05 上午 job.SchedEventLister run
警告: 暂停当前线程5秒钟后在恢复触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
九月 05, 2016 9:41:10 上午 job.SchedEventLister run
警告: 正在恢复了触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
#第三次执行
九月 05, 2016 9:41:10 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:10 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:10 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:10,计数: 3
九月 05, 2016 9:41:10 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:10
九月 05, 2016 9:41:10 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。,状态:正常
#第四次执行
九月 05, 2016 9:41:15 上午 job.SimpleJob execute
信息: ==================:job.SimpleJob was just triggered...
九月 05, 2016 9:41:15 上午 job.SchedEventLister <init>
信息: 触发器线程监听启动....
九月 05, 2016 9:41:15 上午 job.SimpleJob execute
信息: 任务分组名称: Job-Group-Simple,任务名称: SimpleJob,触发器组名称: Trriger-Group-Simple,触发器名称: SimpleTrigger 执行时间: 2016-09-05 09:41:15,计数: 4
九月 05, 2016 9:41:15 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。2016-09-05 09:41:15
九月 05, 2016 9:41:15 上午 job.SimpleJob execute
严重: 正在停止并且移除触发器...,触发器组名: Trriger-Group-Simple,触发器名称: SimpleTrigger
九月 05, 2016 9:41:15 上午 job.SchedEventLister run
信息: 触发器线程监听中。。。。,状态:没有触发器
九月 05, 2016 9:43:00 上午 org.quartz.core.QuartzScheduler shutdown
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
九月 05, 2016 9:43:00 上午 org.quartz.core.QuartzScheduler standby
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
九月 05, 2016 9:43:00 上午 org.quartz.core.QuartzScheduler shutdown
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
quartz.properties文件:
#线程池实现类
org.quartz.threadPool.class =org.quartz.simpl.SimpleThreadPool
#线程池数
org.quartz.threadPool.threadCount = 5
#线程池优先级
org.quartz.threadPool.threadPriority = 5
#线程池运行模式守后,还是前台
org.quartz.threadPool.makeThreadsDaemons=false
###线程池配置的继承属性
org.quartz.threadPool.threadsInheritGroupOfInitializingThread=true
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
###保存job调度执行信息到RAM,这种方式当应用下次重启时,job调度信息容易丢失
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.misfireThreshold = 60000
############.JobStoreTX,是将job调度信息保存到RDB中,应用重启时可以重新调度job
#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#org.quartz.jobStore.dataSource=test
#org.quartz.dataSource.test.driver=com.mysql.jdbc.Driver
#org.quartz.dataSource.test.URL=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=utf8&characterSetResults\=utf8
#org.quartz.dataSource.test.user=root
#org.quartz.dataSource.test.password=123456
#org.quartz.dataSource.test.maxConnections=20
发表评论
-
TreeSet在Quartz任务调度过程中的作用
2017-08-24 23:43 735红黑树详解:http://www.cnblogs.com/sk ... -
Quartz使用与Spring集成系列教程
2016-10-26 09:48 502Quartz的使用:http://donald-draper. ... -
Spring与Quartz集成-源码分析
2016-09-13 11:50 2722在阅读以下文章之前,如果对Quartz任务调度不是很熟悉,请看 ... -
Spring与Quartz集成详解
2016-09-09 17:52 2824首先这个所有的依赖包就不需要多讲了,首先下载Quazrt发布包 ... -
Quartz 任务存储JobStoreTX 持久化之RDB-源码分析
2016-09-08 18:24 2330Quartz 任务存储JobStoreTX 持久化之RDB:h ... -
Quartz 任务存储JobStoreTX 持久化之RDB
2016-09-08 11:52 2836Quartz储存方式之JDBC JobStoreTX:http ... -
Quartz任务调度源码分析
2016-09-07 13:12 3574Quartz的使用:http://donald-draper. ... -
Quartz的job调度源码分析
2016-09-06 13:03 8Quartz的使用:http://donald ... -
Quartzs的job,trriger监听器源码分析
2016-09-06 11:15 1488Quartz的使用:http://donald-draper. ... -
Quartz的job、触发器的暂停与恢复源码分析
2016-09-06 09:01 5273Quartz的使用:http://donald-draper. ... -
Quartz的Scheduler初始化源码分析
2016-09-05 16:14 3597Quartz的使用:http://donald ... -
Quartzs的job存储,触发器、job删除源码分析
2016-09-05 15:39 4571前言:unscheduleJob针对TriggerKey,而d ...
相关推荐
以下是对Spring整合Quartz使用实例的详细说明: 1. **Quartz简介** Quartz是一个强大的、完全开源的作业调度框架,它支持复杂的调度策略,如按日期、时间间隔或自定义表达式执行。Quartz可以在Java应用中作为独立...
### Quartz 使用说明详解 #### 一、Quartz 功能简介 **Quartz** 是一款开源的任务调度框架,广泛应用于 Java 应用程序中。它的主要功能是帮助开发者以灵活的方式调度任务,支持复杂的触发规则。 - **嵌入式运行**...
### Quartz使用例子详解 在Java领域,Quartz是一个强大的任务调度框架,被广泛应用于各种应用场景中,例如定时任务、事件处理等。本文将基于提供的代码片段,深入解析Quartz的使用方法,包括如何定义Job、配置...
Quartz 使用详解 Quartz 是一个功能强大的作业调度器,可以帮助开发者实现复杂的任务调度和执行。下面是关于 Quartz 使用详解的知识点总结。 一、实例化 Scheduler 在使用 Quartz 之前, 必须使用 ...
### Quartz使用总结与详解 #### 一、Quartz概述 Quartz是一个开源的任务调度框架,主要功能在于能够根据用户自定义的时间规则来触发任务执行。Quartz提供了丰富的接口供开发者进行二次开发,使得任务调度变得非常...
- 默认情况下,Quartz使用内存存储作业和触发器信息,但也可以配置使用数据库进行持久化,确保服务器重启后任务不会丢失。 9. **高级特性** - `Stateful Jobs`:有状态的作业,每个实例只执行一次,适合处理不可...
quartz使用指南,quartz使用指南,quartz使用指南
这个小结将深入探讨Quartz的核心概念、使用场景以及如何与Spring框架集成。 一、Quartz简介 Quartz是由Caledonia Software公司开发的Java定时任务库,它提供了一种高度可配置的方式来安排和执行工作。Quartz支持...
Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC...正确配置和使用这两个框架,能够为企业的后台服务带来极大的灵活性和可维护性。
Quartz本身支持多种持久化策略,包括使用数据库(JDBC)来存储作业和触发器信息,这使得任务调度信息在系统重启后仍能保留。下面将详细介绍如何进行Spring与Quartz的整合,以及使用JDBC存储的相关步骤。 1. **...
这个"Quartz使用实例"可能包含一个演示了如何配置和使用Quartz的项目,解压后可以直接运行,这对于初学者或者需要快速理解Quartz工作原理的人来说非常有用。 Quartz的核心概念包括Job(作业)、Trigger(触发器)和...
本文将深入探讨如何使用Quartz配合cron表达式来实现定时任务的实例。 首先,我们要理解cron表达式。Cron表达式是Unix系统中的定时任务调度工具,也被Quartz框架所采用。它由六个或七个子表达式组成,每个子表达式...
Quartz 使用简单、灵活的 API 来创建、管理和执行作业。在本文中,我们将深入探讨如何在 .NET 应用程序中使用 Quartz.NET,这是一个专门为 .NET 平台实现的 Quartz 版本。 首先,要开始使用 Quartz.NET,你需要将 ...
接下来,为了使用`Quartz`,你需要引入`quartz-spring`库,并配置`Scheduler`: ```xml <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 其他配置...
Quartz 是一个开源的作业调度框架,它允许开发者在 Java 应用程序中安排任务的执行。线程池是 Quartz 的核心组成部分,用于管理和执行触发的任务。本文将深入探讨 Quartz 线程池的工作原理、配置以及如何在实际项目...
如果使用的是Spring Boot,可以在`application.properties`或`application.yml`中配置Quartz,并通过`@EnableScheduling`注解启用定时任务支持。 8. **动态管理定时任务** Spring提供的`SchedulerFactoryBean`...
8. **集成环境**:Quartz 可以在多种环境中使用,既可以作为独立应用程序,也可以作为 J2EE 应用服务器的组件。它还支持 RMI(远程方法调用)接口,便于远程管理和监控。 9. **灵活性**:Quartz 的灵活性体现在其...
Quartz 是一个强大的开源作业调度框架,专为 Java 平台设计,无论是 J2SE 还是 J2EE 应用都可以使用。它的主要目的是提供一个简单易用但功能丰富的任务调度解决方案。Quartz 具备数据库支持、集群功能、插件机制、...
postgres quatrz初始化sql脚本文件、pg、quartz、qrtz_开头的表 配置文件需求修改 #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore....