日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

定时调度系列之Quartz.Net详解

發(fā)布時間:2023/12/4 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时调度系列之Quartz.Net详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一. 背景

  我們在日常開發(fā)中,可能你會遇到這樣的需求:"每個月的3號給用戶發(fā)信息,提醒用戶XXX "、"每天的0點需要統(tǒng)計前一天的考勤記錄"、"每個月的1號計算上個月的庫存情況"、"定時初始化數(shù)據(jù)供其它業(yè)務(wù)使用"、"每隔2分鐘輪詢查數(shù)據(jù)庫看某業(yè)務(wù)是否被審核通過,并提示用戶"?等等。

  以上需求在開發(fā)中都非常常見,但它們僅僅屬于低端一點的需求,稍高端一點的需求比如:" 客服派車給調(diào)度,如果調(diào)度3天內(nèi)沒有執(zhí)行任何操作,需要提示調(diào)度要抓緊派車了 ",到這一步為止看起來和上面的需求并沒有什么兩樣,但如果我要求,系統(tǒng)管理員可以動態(tài)配置提示時間呢?即管理員可以配置調(diào)度幾天沒有執(zhí)行任何操作,系統(tǒng)需要給出提示。這么一改的話,對于一些新手而已,難度就陡然上升了。

  下面我們接著升級需求,系統(tǒng)中有A、B、C、D。。。。等等多個業(yè)務(wù),系統(tǒng)管理員可以動態(tài)配置每個業(yè)務(wù)的執(zhí)行時間情況(如:每隔2s執(zhí)行一次、每月3號執(zhí)行一次等等),并且可以動態(tài)的控制每個業(yè)務(wù)的開啟、關(guān)閉、暫停、全部關(guān)閉、全部暫停等。需求升級到這個程度,估計新手就抓蝦了,有一定經(jīng)驗的人但是沒有接觸過類似框架,面對這樣的需求,也需要一點時間去研究。

解惑:

  需求1:也就是我們常說的定時任務(wù),簡答一點的可以借助Timer類來實現(xiàn),對時間要求復雜的需要借助第三方的框架來實現(xiàn),如:Quartz.Net.

  需求2:需要我們動態(tài)配置定時任務(wù)的執(zhí)行時間。

  需求3:需要我們自己搭建一個定時調(diào)度框架,然后來動態(tài)配置任務(wù)的開啟、關(guān)閉和觸發(fā)器的情況。

?  需求三就是我們最終的目標,即我們要搭建一套通用的定時調(diào)度框架,可以手動增加定時任務(wù),配置其觸發(fā)器,手動控制任務(wù)的開啟、關(guān)閉(B/S 架構(gòu));或者C/S架構(gòu),最終部署成windows服務(wù)的形式。

  綜上所述:Quartz.Net將是我們的最佳選擇。

?

二. Quartz.Net簡介

?1. Quartz.Net是一個強大、開源、輕量的作業(yè)調(diào)度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改寫,可用于winform和asp.net應(yīng)用中。它靈活而不復雜。你能夠用它來為執(zhí)行一個作業(yè)而創(chuàng)建簡單的或復雜的作業(yè)調(diào)度。

它有幾大優(yōu)勢:

  a.持久化數(shù)據(jù)庫:SQLServer、MySQL、MongoDB、Redis

  b.集群支持:雙機熱備

  c.支持Web B/S架構(gòu)和WinForm C/S架構(gòu)

  d.trigger可以靈活的控制時間各類苛刻的時間要求

2. Quartz.Net框架的使用

①.引入方式:

  a. 通過NuGet引入搜索Quartz引入相應(yīng)的程序集。

  (2.x版本需要會引入三個程序集:Common.Logging、Common.Logging.Core、Quartz和一個xsd文件用于xml配置進行代碼提示)

  b. 去官網(wǎng)下載源碼,通過引入源碼的形式進行引入(http://www.quartz-scheduler.net/)。

  PS:目前最新版本為3.0.5(2018-06-23),這里采用的是2.6.1 即2x的最后一個版本,3x起支持.netcore,且基本用法發(fā)生了變化,最好使用vs2017

②.基本使用:

  a.創(chuàng)建作業(yè)調(diào)度池(Scheduler)

  b.創(chuàng)建一個具體的作業(yè)即job (具體的job需要單獨在一個文件中執(zhí)行)

  c.創(chuàng)建并配置一個觸發(fā)器即trigger?

  d.將job和trigger加入到作業(yè)調(diào)度池中

  e.開始調(diào)度 start

3. 官方地址

  官網(wǎng):http://www.quartz-scheduler.net/

  示例:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html

?

三. 系列章節(jié)

?  下面我們將一起通過下面的幾個章節(jié),系統(tǒng)的學習一下Quartz.Net的基本用法、擴展一些高級配置,并且最終從框架的角度來處理定時調(diào)度這一類通用的問題,歡迎廣大博友前來交流、指正、學習。

  ? ? ?第一節(jié): Timer的定時任務(wù)的復習、Quartz.Net的入門使用、Aop思想的體現(xiàn)??:

? ? ? ? ?第二節(jié): 比較DateTime和DateTimeOffset兩種時間類型并介紹Quartz.Net中用到的幾類時間形式(定點、四舍五入、倍數(shù)、遞增)??? ??

? ? ? ? ?第三節(jié): Quartz.Net五大構(gòu)件之Scheduler(創(chuàng)建、封裝、基本方法)和Job(創(chuàng)建、關(guān)聯(lián)等)?:

? ? ? ? ?第四節(jié): Quartz.Net五大構(gòu)件之Trigger通用用法(常用方法、優(yōu)先級、與job關(guān)聯(lián)等)?:

? ? ? ? ?第五節(jié): Quartz.Net五大構(gòu)件之Trigger的四大觸發(fā)類?:

? ? ? ? ?第六節(jié): 六類Calander處理六種不同的時間場景?:

? ? ? ? ?第七節(jié):Trigger(SimpleTrigger、CronTrigger)啞火(MisFire)策略?:

? ? ? ? ?第八節(jié): Quartz.Net五大構(gòu)件之SimpleThreadPool及其四種配置方案?:

? ? ? ? ?第九節(jié): 利用RemoteSheduler實現(xiàn)Scheduler跨服務(wù)器的遠程控制?:

? ? ? ? ?第十節(jié): 利用SQLServer實現(xiàn)Quartz的持久化和雙機熱備的集群模式?:

? ? ? ? ?第十一節(jié): 封裝通用的定時調(diào)度框架,實現(xiàn)新增、刪除、開啟、暫停計劃任務(wù)(未完):

? ? ? ? ?第十二節(jié): 總結(jié)Quartz.Net幾種部署模式(IIS、Exe、服務(wù)部署【借助TopSelf、服務(wù)類】)?:

原文地址:https://www.cnblogs.com/yaopengfei/p/9216229.html

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結(jié)

以上是生活随笔為你收集整理的定时调度系列之Quartz.Net详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。