quartz笔记

人走茶凉 提交于 2020-02-26 11:53:07

quartz
1.体系结构(三大元素)
Job/JobDetail任务
Trigger触发器 SimpleTrigger/CornTrigger
scheduler调度器 start stop pause resume
一个Trigger只能由1个job,但一个job可以有多个触发器。
2.主要组件
Scheduler 调度程序-任务执行计划表
创建方式:默认使用StdSchedulerFactory创建

Job 任务类 实现job接口的execute方法
默认每次调用job都会创建新的JobDataMap,即无状态的job。可以添加
@PersistJobDataAfterException注解,实现JobDataMap的持久化,保存上一次的执行结果。

JobDetail 任务的实例,通过JobBuilder创建,可以通过getJobDataMap获取特定实例的状态信息。
JobDataMap job实例执行时,可以使用其中的数据
Trigger触发器 定义触发条件 如cron表达式,间隔时间等。常用的包括SimpleTrigger/CornTrigger.
startDate任务第一次开始时间,endDate任务结束时间
JobBuilder 用于创建任务实例
TriggerBuilder 用于创建触发器实例
JobListener、TriggerListener、SchedulerListener 监听器,监听相应的组件。

3.监听器
监听器主要有JobListener、TriggerListener、SchedulerListener三种。也可分为全局监听器和非全局监听器。
全局监听器能接收到所有的Job/Trigger的事件通知,非全局监听器只能接收到在其上注册的job或trigger的事件通知。
api

4.集群配置
1)添加垃圾回收插件,防止quartz内存泄漏

    <listener>  
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
    </listener>  

2)配置spring

    <bean id="schedulerFactoryBean"   
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" >   
        <property name="dataSource" ref="dataSource"/> <!-- 指定集群数据存储 -->  
        <property name="startupDelay" value="180"/> <!-- 延迟3分钟执行定时任务,防止启动卡死 -->  
        <property name="configLocation" value="classpath:quartz.properties" />  
    </bean>

3)quartz配置

org.quartz.scheduler.instanceName = Mscheduler #调度器名  
org.quartz.scheduler.instanceId = AUTO #每台实例ID,AUTO自动生成即可  
org.quartz.jobStore.clusterCheckinInterval=20000 #检查间隔

#============================================================================  
\# Configure ThreadPool   
#============================================================================  
#org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool  
org.quartz.threadPool.threadCount = 10  
org.quartz.threadPool.threadPriority = 5

#============================================================================  
\# Configure JobStore   
#============================================================================  
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX  
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate  
#org.quartz.jobStore.useProperties = false  
#org.quartz.jobStore.dataSource = myDS  
org.quartz.jobStore.tablePrefix = QRTZ_  
org.quartz.jobStore.isClustered = true  
#同时可以处理的未按时调用的JOB数量  
org.quartz.jobStore.maxMisfiresToHandleAtATime=5
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!