quartz笔记

编程

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

以上是 quartz笔记 的全部内容, 来源链接: utcz.com/z/513122.html

回到顶部