天天看點

.net下作業排程實戰[quartz]

在我們處理各類資訊系統的業務時,定時的排程問題會經常的涉及,quartz是java社群一個很成熟的解決方案,.net也有對應的開源實作,具體為:http://quartznet.sourceforge.net/

不過這個版本對vs2010和64的支援不好,今天抽了一些時間對以前的這些部分進行了更新,整理了一個初步的通用的方案。

具體的結構圖如下:

.net下作業排程實戰[quartz]

RemoteDemo

<quartz>

    <add key="quartz.scheduler.proxy" value="true"/>

    <add key="quartz.scheduler.proxy.address" value="tcp://localhost:555/QuartzScheduler"/>

</quartz>

有以上的配置後,隻要啟動排程,加入作業,即可以發送到排程服務

ISchedulerFactory sf = new StdSchedulerFactory();

IScheduler sched = sf.GetScheduler();

Quartz.Server.Console / Quartz.Server.Service

調試時可以使用指令行;部署時使用Windows Service

quartz.config可以進行各種配置設定,例子中Sql Server 和sqlite都可以

[注意sqlite區分32/64平台,lib\sqlite是重新編譯版本,消除了對VC庫的依賴]

quartz.db是使用sql腳本建立的資料庫檔案

排程的内容存儲在資料庫中,以QRTZ_開頭的表,如下是一個例子排程的内容

QRTZ_JOB_DETAILS

remotelyAddedJob default JobDefinition.SimpleJob, JobDefinition 0 0 0 0

QRTZ_TRIGGERS

remotelyAddedTrigger default remotelyAddedJob default 0 634510595450000000 634510595400000000 5 ACQUIRED CRON 634510595000000000 0 0

定義作業

在quartz_jobs.xml中配置或用戶端代碼釋出均可

完整的代碼參考: