該文章來源於網頁整理.java
1.quartz.properties配置文件說明web
在集羣中每一個實例都必須有一個惟一的instanceId,可是應該有一個相同的instanceName
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTOspring
定義線程池,SimpleThreadPool這個線程池只是簡單地在它的池中保持固定數量的線程,不增加也不縮小。可是它很是健壯且通過良好的測試,差很少每一個Quartz用戶都使用這個池。
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3 最多隻能有3個線程併發sql
一個觸發器被認定爲「misfired」以前,調度器所能容忍的毫秒數
org.quartz.jobStore.misfireThreshold = 60000數據庫
全部的Quartz數據,例如Job和Trigger的細節信息被存儲在內存(數據庫)中。
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
#org.quartz.jobStore.class = org.quartz.simpl.JDBCJobStore服務器
JobStoreTX來讓Quartz幫你管理事務(這是最廣泛的選擇)。
若是想讓Quartz同其餘的事務協同工做(例如:J2EE應用服務器中的事務),那麼你須要使用JobStoreCMT,這樣,Quartz就會讓應用服務器容器來管理事務
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT併發
DriverDelegate負責作指定數據庫的全部JDBC工做.
若是數據庫沒有其餘指定的代理,那麼就試用代理StdJDBCDelegate。
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegateapp
爲了指示JDBCJobStore全部的JobDataMaps中的值都是字符串,而且能以「名字-值」對的方式存儲而不是以複雜對象的序列化形式存儲在BLOB字段中,應設置值爲」true」(這是缺省的方式)。
org.quartz.jobStore.useProperties = true負載均衡
配置數據源源的名數、據庫表前前綴
#org.quartz.jobStore.dataSource = myDS
#org.quartz.jobStore.tablePrefix = QRTZ_ide
是否集羣 負載均衡和容錯
#org.quartz.jobStore.isClustered = false
配置數據源
#org.quartz.dataSource.myDS.driver = org.postgresql.Driver
#org.quartz.dataSource.myDS.URL = jdbc:postgresql://localhost/dev
#org.quartz.dataSource.myDS.user = jhouse
#org.quartz.dataSource.myDS.password =
若是Scheduler很是忙(好比,執行的任務數量差很少和線程池的數量相同,那麼你須要正確地配置DataSource的鏈接數量爲線程池數量+1)
#org.quartz.dataSource.myDS.maxConnections = 5
2.
spring定時任務之quartz
1) 編寫業務類,該類繼承了org.quartz.Job,主要的邏輯在execute方法中編寫
2) 配置spring的applicationContext.xml文件
2.1 配置任務JobDetailBean
2.2配置觸發器 CronTriggerBean
2.3配置調度器 SchedulerFactoryBean
3 )所須要的jar包:
spring.jar,quartz.jar,commons-logging-1.0.4.jar,commons-dbcp-1.2.2.jar,commons-pool-1.3.jar
4 )把quartz.properties放到類路徑下
demo:
package task;
import java.util.Date;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class Busine***eport implements org.quartz.Job{
public void perform(){ //執行報表統計入口函數
//業務邏輯
System.out.println("開始執行報表的業務邏輯了----如今的時間是--"+new Date());
}
public void execute(JobExecutionContext arg0) throws JobExecutionException {
perform();
}
}
applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!--
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" ":/spring-beans.dtd">
-->
<beans>
<bean id="busine***eport" class="task.Busine***eport" />
<bean name="reportTask"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="task.Busine***eport" />
</bean>
<!-- 觸發器 -->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向咱們的任務 -->
<property name="jobDetail" ref="reportTask" />
<!-- 天天下午16點50分到55分,每分鐘運行一次 -->
<property name="cronExpression" value="0 50-55 16 * * ?" />
</bean>
<!-- 調度器 -->
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- 觸發器列表 -->
<ref bean="cronTrigger" />
</list>
</property>
<property name="configLocation" value="classpath:quartz.properties" />
</bean>
</beans>
3.cronExpression表達式解釋:0 0 12 * * ?---------------在天天中午12:00觸發 0 15 10 ? * *---------------天天上午10:15 觸發 0 15 10 * * ?---------------天天上午10:15 觸發 0 15 10 * * ? *---------------天天上午10:15 觸發 0 15 10 * * ? 2005---------------在2005年中的天天上午10:15 觸發 0 * 14 * * ?---------------天天在下午2:00至2:59之間每分鐘觸發一次 0 0/5 14 * * ?---------------天天在下午2:00至2:59之間每5分鐘觸發一次 0 0/5 14,18 * * ?---------------天天在下午2:00至2:59和6:00至6:59之間的每5分鐘觸發一次 0 0-5 14 * * ?---------------天天在下午2:00至2:05之間每分鐘觸發一次 0 10,44 14 ? 3 WED---------------每三月份的星期三在下午2:00和2:44時觸發 0 15 10 ? * MON-FRI---------------從星期一至星期五的天天上午10:15觸發 0 15 10 15 * ?---------------在每月的每15天的上午10:15觸發 0 15 10 L * ?---------------在每月的最後一天的上午10:15觸發 0 15 10 ? * 6L---------------在每月的最後一個星期五的上午10:15觸發 0 15 10 ? * 6L 2002-2005---------------在2002, 2003, 2004 and 2005年的每月的最後一個星期五的上午10:15觸發 0 15 10 ? * 6#3---------------在每月的第三個星期五的上午10:15觸發 0 0 12 1/5 * ?---------------從每個月的第一天起每過5天的中午12:00時觸發 0 11 11 11 11 ?---------------在每一個11月11日的上午11:11時觸發.