任務排程 Quartz 儘量做到可配置?
下面想總結下專案中完全只使用 任務排程Quartz來 組織定時任務 :
1.首先我們需要Quartz的jar包 ,見附件
2.我們來建立一個 ServletContextListener 實現這個介面的一個監聽器,主要用來啟動任務排程
public class SchedulerListener implements ServletContextListener {
public void contextInitialized (ServletContextEvent sce) {
//TODO : something
}
public void contextDestroyed (ServletContextEvent sce) {
//TODO : something
}
在web.xml配置這個監聽器
<context-param> <param-name>scheduler-config-file</param-name> <param-value>/config/quartz.properties</param-value> </context-param> <listener> <listener-class> com.test.quartz.SchedulerListener </listener-class> </listener>
3. 屬性檔案的編寫 quartz.properties
# Default Properties file for use by StdSchedulerFactory # to create a Quartz Scheduler Instance, if a different # properties file is not explicitly specified. # org.quartz.scheduler.instanceName = DefaultQuartzScheduler org.quartz.scheduler.rmi.export = false org.quartz.scheduler.rmi.proxy = false org.quartz.scheduler.wrapJobExecutionInUserTransaction = false org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 10 org.quartz.threadPool.threadPriority = 5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true org.quartz.jobStore.misfireThreshold = 60000 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore #============================================================================ # Configure Plugins #============================================================================ org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin org.quartz.plugin.jobInitializer.fileNames = /config/quartz-jobs.xml org.quartz.plugin.jobInitializer.overWriteExistingJobs = true org.quartz.plugin.jobInitializer.failOnFileNotFound = true org.quartz.plugin.jobInitializer.scanInterval = 10 org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
由於具體的東西瞭解不是很深,所有沒有註釋這些配置是做什麼的 ,以後補充
可以參考下面的超鏈 好像講了很多 quartz.properties配置說明 http://kdisk-sina-com.iteye.com/blog/436109
4.quartz-jobs.xml 的配置
<?xml version='1.0' encoding='utf-8'?> <quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opensymphony.com/quartz/JobSchedulingData http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd" version="1.5"> <job> <job-detail> <name>myJob</name> <group>myJobs</group> <job-class>com.test.quartz.MyJob</job-class> </job-detail> <trigger> <cron> <name>myTrigger</name> <group>testTriggers</group> <job-name>myJob</job-name> <job-group>test</job-group> <cron-expression>0 0 2 * * ?</cron-expression> <!-- Fire at 02:00 am every day --> </cron> </trigger> </job> </quartz>
配置說明 : 其中 com.test.quartz.MyJob 類是我們需要自己實現自己需要的東西
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
public void execute (JobExecutionContext jobCtx) throws JobExecutionException {
//TODO :something
}
}
這裡,我們可以把多個相同性質的任務 都放在execute方法裡面 . 例如 有多個不同的任務都是要在 下午3點定時執行的
話,我們就都把他放在這裡執行,
在上面的 quartz-jobs.xml 的配置中 ,我們可以配置多個 job節點 ,完成我們對不同任務的排程時間的不同需求
這樣就達到可以配置的目的了
相關文章
- Quartz任務排程快速入門quartz
- 任務排程框架Quartz快速入門!框架quartz
- 深入解讀Quartz任務排程器quartz
- SpringBoot整合任務排程框架Quartz及持久化配置Spring Boot框架quartz持久化
- Quartz.NET配置檔案:簡便任務排程,輕鬆管理quartz
- 一文快速入門任務排程框架-Quartz框架quartz
- NET作業排程(定時任務)-Quartz.Netquartz
- 山寨版Quartz.Net任務統一排程框架quartz框架
- 任務排程
- Spring Boot Quartz 分散式叢集任務排程實現Spring Bootquartz分散式
- Laravel 任務排程Laravel
- Airflow 任務排程AI
- [原始碼分析] 定時任務排程框架 Quartz 之 故障切換原始碼框架quartz
- DolphinScheduler心臟:Quartz的定時任務排程框架深度解析quartz框架
- Spark中資源排程和任務排程Spark
- 分散式任務排程分散式
- Nucleus PLUS任務排程
- linux 任務排程Linux
- 十七、.net core(.NET 6)搭建基於Quartz元件的定時排程任務quartz元件
- Laravel 服務之任務排程Laravel
- Spring Boot 配置 Quartz 定時任務Spring Bootquartz
- 分散式排程任務-ElasticJob分散式AST
- Spring 指南(排程任務)Spring
- 聊聊PowerJob的任務排程
- 【Spark篇】---Spark資源排程和任務排程Spark
- laravel框架任務排程(定時執行任務)Laravel框架
- 【Python】輕量級分散式任務排程系統-RQPython分散式
- LTS分散式任務排程部署分散式
- Linux 定時任務排程Linux
- ZooKeeper分散式任務排程中心分散式
- 獨立任務最優排程
- 快速掌握SQL Server任務排程SQLServer
- Oracle任務排程工具學習Oracle
- LiteOS-任務篇-原始碼分析-任務排程函式原始碼函式
- Python任務排程模組APSchedulerPython
- LeetCode 621 任務排程器LeetCode
- 621. 任務排程器 (構造)
- 力扣 621. 任務排程器力扣