quartz数据持久化
来源:互联网 发布:淘宝泰州医药城地址 编辑:程序博客网 时间:2024/06/05 05:39
spring-quartz.xml
<context:component-scan base-package="com.test.job" /><!-- 可持久化的quartz --><bean id="scheduler" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="autoStartup" value="true" /> <!--自动启动 --> <property name="startupDelay" value="20" /> <!--延时启动 --> <property name="applicationContextSchedulerContextKey" value="applicationContextKey" /> <property name="configLocation" value="WEB-INF/conf/quartz.properties"/></bean>
quartz.properties
org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 10
org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
org.quartz.jobStore.misfireThreshold: 60000
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.scheduler.instanceId: AUTO
org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.isClustered: true
org.quartz.jobStore.clusterCheckinInterval: 1000
SystemScheduler.java
@Component
public class SystemScheduler{
/** @author xuegang on 2016年3月22日
* @TODO
*/
@Autowired
private Scheduler scheduler;
/** * @author xuegang on 2016年3月22日 * @TODO add job */public boolean addJob(JobTaskInfo jobTaskInfo) throws SchedulerException{ TriggerKey triggerKey = TriggerKey.triggerKey(jobTaskInfo.getJobName(), Scheduler.DEFAULT_GROUP); JobKey jobKey = new JobKey(jobTaskInfo.getJobName(), Scheduler.DEFAULT_GROUP); if(checkExists(jobTaskInfo.getJobName(), Scheduler.DEFAULT_GROUP)){ return false; } //不触发立即执行,等待下次Cron触发频率达到时执行 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobTaskInfo.getJobCron()) .withMisfireHandlingInstructionIgnoreMisfires(); CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder) .build(); JobDetail jobDetail = JobBuilder.newJob(jobTaskInfo.getJobClass()).withIdentity(jobKey).build(); //JobDataMap jobDataMap = jobDetail.getJobDataMap(); // jobDataMap.putAll(null); scheduler.scheduleJob(jobDetail, cronTrigger); return true;}/** * @author xuegang on 2016年3月22日 * @TODO 检查job是否存在 */private boolean checkExists(String jobName, String jobGroup) throws SchedulerException{ TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroup); return scheduler.checkExists(triggerKey);}/** * @author xuegang on 2016年3月22日 * @TODO 重新执行 */public boolean rescheduleJob(JobTaskInfo jobTaskInfo) throws SchedulerException { // TriggerKey valid if_exists if (!checkExists(jobTaskInfo.getJobName(), Scheduler.DEFAULT_GROUP)) { return false; } // TriggerKey : name + group TriggerKey triggerKey = TriggerKey.triggerKey(jobTaskInfo.getJobName(), Scheduler.DEFAULT_GROUP); JobKey jobKey = new JobKey(jobTaskInfo.getJobName(), Scheduler.DEFAULT_GROUP); // CronTrigger : TriggerKey + cronExpression CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobTaskInfo.getJobCron()).withMisfireHandlingInstructionDoNothing(); CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build(); //scheduler.rescheduleJob(triggerKey, cronTrigger); // JobDetail-JobDataMap fresh JobDetail jobDetail = scheduler.getJobDetail(jobKey); JobDataMap jobDataMap = jobDetail.getJobDataMap(); jobDataMap.clear(); // Trigger fresh HashSet<Trigger> triggerSet = new HashSet<Trigger>(); triggerSet.add(cronTrigger); scheduler.scheduleJob(jobDetail, triggerSet, true); return true;}/** * @author xuegang on 2016年3月22日 * @TODO 执行job(一次) */public boolean triggerJob(String jobName) throws SchedulerException { // TriggerKey : name + group JobKey jobKey = new JobKey(jobName, Scheduler.DEFAULT_GROUP); boolean result = false; if (checkExists(jobName, Scheduler.DEFAULT_GROUP)) { scheduler.triggerJob(jobKey); result = true; } return result;}/** * @author xuegang on 2016年3月22日 * @TODO 停止作业job */public boolean pauseJob(String jobName) throws SchedulerException { // TriggerKey : name + group TriggerKey triggerKey = TriggerKey.triggerKey(jobName, Scheduler.DEFAULT_GROUP); boolean result = false; if (checkExists(jobName, Scheduler.DEFAULT_GROUP)) { scheduler.pauseTrigger(triggerKey); result = true; } return result;}/** * @author xuegang on 2016年3月22日 * @TODO 恢复job */public boolean resumeJob(String jobName) throws SchedulerException { // TriggerKey : name + group TriggerKey triggerKey = TriggerKey.triggerKey(jobName, Scheduler.DEFAULT_GROUP); boolean result = false; if (checkExists(jobName, Scheduler.DEFAULT_GROUP)) { scheduler.resumeTrigger(triggerKey); result = true; } return result;}/** * @author xuegang on 2016年3月22日 * @TODO 删除job */public boolean removeJob(String jobName) throws SchedulerException { // TriggerKey : name + group TriggerKey triggerKey = TriggerKey.triggerKey(jobName, Scheduler.DEFAULT_GROUP); boolean result = false; if (checkExists(jobName, Scheduler.DEFAULT_GROUP)) { result = scheduler.unscheduleJob(triggerKey); } return result;}
}
定义JobTaskInfo.java,SystemJob implements Job
- quartz数据持久化
- quartz-1.8.6 数据持久化说明
- quartz持久化
- spring整合quartz持久化
- quartz持久化部署实现
- quartz定时持久化改造
- Quartz 2.2.3持久化
- Quartz 2.2.3持久化
- 【Quartz】Quartz存储与持久化-基于Spring的配置
- Quartz存储与持久化-基于quartz.properties的配置
- 【Quartz】Quartz存储与持久化-基于Spring的配置
- quartz 持久化数据库表格字段解释
- spring整合quartz并持久化
- spring整合quartz并持久化
- Spring下quartz调度持久化实战
- spring集成quartz持久化简单应用
- quartz持久化之配置文件路径
- Quartz(05) job 的持久化
- 浮动元素没有撑开父容器
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- 锁屏技术哪家强,谈安卓锁屏的几个问题
- 链表的冒泡排序
- 随笔:弱类型语言javascript中的一些小坑
- quartz数据持久化
- 实现一个注解接口
- storyBoard的基本用法
- View之孪生兄弟 ----- SurfaceView
- 全备份、差异备份和增量备份概念详述
- c语言:顺序表的实现(三)将元素e插入到一个递减有序表中,不改变顺序表的递减有序性。
- 表单
- 跟我一起学习mysql技术内幕(第五版)吧!(学习日志)
- 如何每日增量加载数据到Hive分区表