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整合quartz的叢集配置例項Springquartz
- 如何實現Spring Boot和Quartz整合? - Nguyen Phuc HaiSpring BootquartzAI
- Spring整合Quartz案例使用RAM儲存方式Springquartz
- Spring整合Quartz案例使用JDBC儲存方式SpringquartzJDBC
- Autofac 和 Quartz.Net 自動注入的整合quartz
- 【Springboot】快速整合QuartzSpring Bootquartz
- SpringBoot 整合 Quartz + MySQLSpring BootquartzMySql
- Quartz.NET整合UI版quartzUI
- 使用Spring整合Quartz輕鬆完成定時任務Springquartz
- Spring 整合 Quartz 實現動態定時任務Springquartz
- Quartz - Quartz簡單入門quartz
- Spring 4+Redis+ActiveMQ+MongoDB+MySql+Quartz 整合 註解方式SpringRedisMQMongoDBMySqlquartz
- 初識spring與quartz整合實現定時任務Springquartz
- Spring quartz 叢集模式的坑Springquartz模式
- Spring Quartz定時器&n…Springquartz定時器
- Quartz在Spring中叢集quartzSpring
- Spring中Quartz排程器的使用Springquartz
- Quartz初探quartz
- Quartz原理quartz
- Spring Boot 參考指南(Quartz Scheduler)Spring Bootquartz
- Spring Scheduler定時任務 + QuartzSpringquartz
- 普通web整合quartz跑定時任務Webquartz
- 整合Atomikos、Quartz、Postgresql的踩坑日記quartzSQL
- 三、Quartz中Scheduler的理解和使用quartz
- Quartz定時任務框架(二) Quartz詳解quartz框架
- Spring Boot 配置 Quartz 定時任務Spring Bootquartz
- 實戰程式碼(一):SpringBoot整合QuartzSpring Bootquartz
- Quartz入門及觸發器與Trigger的介紹&&Spring task Vs Quartz的比較quartz觸發器Spring
- Spring Quartz Java工程版和Web工程版示例SpringquartzJavaWeb
- Quartz 學習quartz
- Quartz 使用教程quartz
- Quartz框架中的Schedulerquartz框架
- quartz的配置表示式quartz
- spring4.x 整合quartz2.x 叢集化配置專案例項Springquartz
- Spring+quartz 實現定時任務Springquartz
- spring quartz如何實現多工定時Springquartz