Quartz - Spring和Quartz的整合
一、建立任務實體 實現任務的具體邏輯
package com.xl.task;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class SimpleExtsJob extends QuartzJobBean {
private String alias; //由JobDetailBean的jobDataAsMap注入
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println("Job start...");
}
public void setAlias(String alias) {
this.alias = alias;
}
}
2、非繼承的實現 package com.xl.task;
import org.springframework.stereotype.Component;
@Component
public class SimpleCommJob {
public void doJob() throws Exception {
System.out.println("Job start...");
}
}
二、配置作業細節 注入要被排程的任務
1、繼承式的排程配置
<bean name="simpleExtsJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.xl.task.SimpleExtsJob" /> <!-- 配置Job的類名 -->
<property name="jobDataAsMap"> <!-- 為有屬性需要注入的Job配置值(quartz1.6和spring3.0可以自動為為繼承式Job屬性注入) -->
<map>
<entry key="alias" value="simple" />
</map>
</property>
</bean>
2、非繼承的排程配置 <bean id="SimpleCommJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="simpleCommJob"/> <!-- 注入Bean的Id -->
<property name="targetMethod" value="doJob"/> <!-- 任務被排程後執行的方法 -->
<property name="concurrent" value="false"/> <!-- 是否允許併發(在任務執行時間大於排程間隔時間時) -->
</bean>
三、配置任務觸發器 繼承和非繼承的配置相同,定義任務觸發的時間與頻率,常用觸發器有SimpleTrigger和CronTrigger兩種
1、SimpleTriggerBean觸發器,每隔多長時間執行一次的觸發器(上一次開始到下一次開始開始之間的間隔)
<bean id="simpleCommSimpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="simpleCommJobDetail" />
<property name="startDelay" value="60000" />
<property name="repeatInterval" value="60000" />
</bean>
2、CronTriggerBean觸發器,每到什麼時間執行一次的觸發器(如每天幾點幾分開始執行) <bean id="simpleCommCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="simpleCommJobDetail"/>
<property name="cronExpression" >
<value>0 0 9 * * ?</value>
</property>
</bean>
四、配置任務計劃的排程工廠
<bean id="configScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="simpleCommSimpleTrigger"/> <!-- 配置任務觸發器 -->
<!-- <ref local="simpleCommCronTrigger"/> -->
</list>
</property>
</bean>
五、補充
1、如果出現定時排程的任務執行一段時間後突然不執行了,可以嘗試增大執行緒池的最大執行緒數org.quartz.threadPool.threadCount,該引數預設值為10
相關文章
- spring-quartz整合Springquartz
- Quartz - Spring整合Quartz實現叢集的定時任務quartzSpring
- 如何實現Spring Boot和Quartz整合? - Nguyen Phuc HaiSpring BootquartzAI
- 【Springboot】快速整合QuartzSpring Bootquartz
- SpringBoot 整合 Quartz + MySQLSpring BootquartzMySql
- Spring整合Quartz案例使用RAM儲存方式Springquartz
- Spring整合Quartz案例使用JDBC儲存方式SpringquartzJDBC
- Autofac 和 Quartz.Net 自動注入的整合quartz
- Quartz.NET整合UI版quartzUI
- Spring quartz 叢集模式的坑Springquartz模式
- Quartz在Spring中叢集quartzSpring
- SpringBoot整合Quartz定時任務Spring Bootquartz
- Quartz - Quartz簡單入門quartz
- 整合Atomikos、Quartz、Postgresql的踩坑日記quartzSQL
- Spring Boot 參考指南(Quartz Scheduler)Spring Bootquartz
- 實戰程式碼(一):SpringBoot整合QuartzSpring Bootquartz
- Quartz入門及觸發器與Trigger的介紹&&Spring task Vs Quartz的比較quartz觸發器Spring
- Quartz初探quartz
- Spring Boot 配置 Quartz 定時任務Spring Bootquartz
- 普通web整合quartz跑定時任務Webquartz
- Quartz定時任務框架(二) Quartz詳解quartz框架
- spring4.x 整合quartz2.x 叢集化配置專案例項Springquartz
- Quartz 學習quartz
- Quartz 使用教程quartz
- Quartz框架中的Schedulerquartz框架
- Quartz原理解密quartz解密
- Quartz 簡單使用quartz
- 深入解讀Quartz的原理quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 1:使用Quartzquartz
- springboot整合Quartz實現動態配置定時任務Spring Bootquartz
- Grails整合Quartz外掛實現定時任務(Job)AIquartz
- SpringBoot整合任務排程框架Quartz及持久化配置Spring Boot框架quartz持久化
- Quartz.NET 使用入門整理二(搭建quartz.net專案)quartz
- Quartz.NET 2.x 文件翻譯 - Lesson 12:Quartz的其他各種特性quartz
- ApiBoot - ApiBoot Quartz 使用文件APIbootquartz
- Quartz job scheduler 學習quartz
- Quartz (2) - 動態操作quartz
- Quartz:基本用法總結quartz