Quartz開發 基礎開發

2021-09-22 18:20:29 字數 3191 閱讀 9882

開發環境

.net 4.5.1

quartz.dll v2.4.1.0 依賴下面的dll

common.loggin.dll v3.3.1.0 依賴下面的dll

common.loggin.core.dll v3.3.1.0

本次教程只介紹基於quartz_jobs.xml配置檔案方式的開發,這也是簡單且常見的方式

quartz核心概念

1、job 表示乙個工作任務,業務**的執行入口,業務**需要繼承quartz.ijob介面並實現execute方法,此方法即業務**的入口函式

2、jobdetail 表示乙個上體的可執行的排程程式

3、trigger 代表乙個排程引數的配置,排程方案與執行計畫

4、scheduler 代表乙個排程容器,可以註冊多個jobdetail和trigger

5、schedulerplugin 排程外掛程式,自定義外掛程式需要繼承 quartz.spi.ischedulerplugin

6、schedulerlistener 排程***,自定義需要繼承 quartz.ischedulerlistener

7、triggerlistener 觸發器***,自定義需要繼承 quartz.itriggerlistener

8、joblistener 工作任務***,自定義需要繼承 quartz.ijoblistener

業務開發介紹

這一塊的基礎實現其實很簡單,只需要繼承quartz.ijob類,並實際execute方法,此方法是業務**執行的入口,將業務**寫好,並配置好quartz_jobs.xml檔案即可執行

示例:

1、新建乙個類庫專案,並引入quartz.dll

using system;

using quartz;

namespace quartztestjob

}}

2、編譯上面的**並生成dll檔案,即完成了最簡單的業務**部分

3、配置工作任務與觸發器 quartz_jobs.xml檔案

<?xml version="1.0" encoding="utf-8"?>

true

testjob2job

testjob2jobgroup

測試job

quartztestjob.testjob,quartztestjob

true

false

testjob2trigger

testjob2triggergroup

testjob2job

testjob2jobgroup

2015-01-01t00:00:00+08:00

0 */1 * * * ?

配置介紹:

乙個job塊對應乙個trigger塊,不然不會工作,具體工作原理可通過反編譯quartz.dll檔案,看看quartz.plugin.xml.xmlschedulingdataprocessorplugin 這個類的**,他是怎麼解析這個配置檔案的,我沒去研究。

job 塊

name: job的名稱,必須全域性唯一

group:job的分組,quartz有按組暫停job的能力,非必填,quartz會自動生成,下面的相關的也型別

job-type: 這個是業務dll的type,基於c#的反射功能完成,分為兩段,第一段是完整的型別名,包含:命令空間,類名,第二段我的理解應該是dll檔名稱,剛開始研究的時候就犯過這個錯誤,dll檔名和命令空間名稱不一致,導致**一直不執行,又不報錯,完全不知道原因。

trigger 塊

排程型別,共有四種型別,常用的是cron和******這兩種,

cron 類似於linux的計畫任務那種 0 0/2 * * * ?

****** 可以設定執行次數和執行間隔,兩種的配置格式以示例一樣,

cron塊

name: 觸發器名稱,必須唯一

group:分組,非必填

job-name: 關聯的job名稱

job-group:關聯的job分組,非必填

start-time: 開始日期與時間

cron-expression: 排程計畫,可以參考

******塊

name: 觸發器名稱,必須唯一

group:分組,非必填

job-name: 關聯的job名稱

job-group:關聯的job分組,非必填

repeat-count:執行次數,-1 代表永不停止

repeat-interval:執行間隔,單位毫秒

4、新建乙個控制台專案,並引入quartz.dll,在main方法中初始化scheduler並啟動即可執行**了

using quartz;

using quartz.impl;

namespace quartztest

}

5、quartz.conf 檔案介紹

#排程容器的例項名稱,很少使用

quartz.scheduler.instancename = quartztest

#排程容器內的工作執行緒引用的型別

quartz.threadpool.type = quartz.simpl.******threadpool, quartz

#工作執行緒數量,可根據自己的任務數量調大,以防任務數量太多,有些任務無線程可用

quartz.threadpool.threadcount = 10

#優先順序設定,預設吧。不知道怎麼配置

quartz.threadpool.threadpriority = normal

#這是官方自帶的外掛程式,用來解析我們在quartz_jobs.xml中配置的任務與觸發器,

quartz.plugin.xml.type = quartz.plugin.xml.xmlschedulingdataprocessorplugin, quartz

#配置檔案的名稱

quartz.plugin.xml.filenames = ~/quartz_jobs.xml

引用參考

這個在國內開啟可能很慢

ios開發 Quartz路徑

四個圖元 1.點2.線段 3.弧4.貝塞爾曲線 例項 使用貝塞爾曲線 建立根檢視控制器 viewcontroller rootviewcontroller viewcontroller alloc init 建立自定義檢視 myview view myview alloc initwithframe...

Spring中Quartz開發指南

quartz 是乙個強大的企業級任務排程框架,spring 中繼承並簡化了 quartz 下面就看看在 spring 中怎樣配置 quartz 首先我們來寫乙個被排程的類 public class quartzjob spring 的配置檔案 work 10,15,20,25,30,35,40,45...

rar檔案Quartz開發指南

本文目前主要包括如下幾個部分 quartz功能簡介 介紹quartz的特點及概念。使用quartz的常見問題 很多使用者在使用過程中遇到常見問題的解答。快速開始 讓讀者盡快掌握quartz開發。通過一些列的課程來指導如何使用quartz.收藏舉報 width 300 height 250 frame...