Quartz.Net使用教程

来源:https://www.cnblogs.com/team-xiong/archive/2019/12/26/12101140.html
-Advertisement-
Play Games

Quartz.Net使用教程 在項目的開發過程中,難免會遇見後需要後臺處理的任務,例如定時發送郵件通知、後臺處理耗時的數據處理等,這個時候你就需要Quartz.Net了。 Quartz.Net是純凈的,它是一個.Net程式集,是非常流行的Java作業調度系統Quartz的C#實現。 Quartz.N ...


Quartz.Net使用教程

在項目的開發過程中,難免會遇見後需要後臺處理的任務,例如定時發送郵件通知、後臺處理耗時的數據處理等,這個時候你就需要Quartz.Net了。

Quartz.Net是純凈的,它是一個.Net程式集,是非常流行的Java作業調度系統Quartz的C#實現。

Quartz.Net一款功能齊全的任務調度系統,從小型應用到大型企業級系統都能適用。功能齊全體現在觸發器的多樣性上面,即支持簡單的定時器,也支持Cron表達式;即能執行重覆的作業任務,也支持指定例外的日曆;任務也可以是多樣性的,只要繼承IJob介面即可。

對於小型應用,Quartz.Net可以集成到你的系統中,對於企業級系統,它提供了Routing支持,提供了Group來組織和管理任務,此外還有持久化、插件功能、負載均衡和故障遷移等滿足不同應用場景的需要。

我們使用的是當前最新版本2.4.0進行演示。(註意:高版本不適合當前教程)添加引用以後,來創建一個Job類

 

 

 

 

 1        static void Main(string[] args)
 2         {
 3             //1.首先創建一個作業調度池
 4             ISchedulerFactory schedf = new StdSchedulerFactory();
 5             //2.實例化調度器工廠
 6             ISchedulerFactory schedulefactory = new StdSchedulerFactory();
 7             //3.實例化調度器
 8             IScheduler scheduler = schedulefactory.GetScheduler();
 9 
10             //4.創建一個作業
11             IJobDetail job1 = JobBuilder.Create<Class1>()
12                 .WithIdentity("demojob1", "groupa")
13                 .Build();
14 
15             //5.1:第一種方法直接寫死多少秒執行一次
16             //ITrigger trigger1 = TriggerBuilder.Create()//創建一個觸發器
17             //    .WithIdentity("demotrigger1", "groupa")
18             //    .StartNow()
19             //    .WithSimpleSchedule(b => b.WithIntervalInSeconds(5)//5秒執行一次
20             //    .RepeatForever())//無限迴圈執行
21             //    .Build();
22 
23             //5.2推薦:第二種使用cron表達式
24             //線上生成cron表達式: http://cron.qqe2.com/ 
25             string corn = "*/10 * * * * ?";
26             ITrigger trigger1 = TriggerBuilder.Create()
27                .WithIdentity("demotrigger1", "groupa")
28               .WithCronSchedule(corn)//每一小時執行一次
29               .Build();
30 
31             //6.添加參數(鍵值對),如果不需要傳參則忽略這一步
32             //方法內獲取你傳的參數: string Name = context.Trigger.JobDataMap.GetString("Name");
33             trigger1.JobDataMap.Add("Name", "劉玄德");
34 
35             //7.把作業,觸發器加入調度器
36             scheduler.ScheduleJob(job1, trigger1);
37             //8.開始運行
38             scheduler.Start();
39         }

以上就是最簡單的Quartz的使用事例

  2.下麵是我個人的一點擴展

1             Type type = Type.GetType("test1.TestCase");//獲取類 ""里為 命名空間.類名
2             Object obj = Activator.CreateInstance(type);//這裡創建
3             //4.創建一個作業
4             IJobDetail job2 = JobBuilder.Create(obj.GetType())
5                 .WithIdentity("demojob1", "groupa")
6                 .Build();
7   //適合已經存在的方法動態添加定時任務

 

1             //適合在不改變代碼的情況下,動態添加要定時執行的方法(前面是文件物理地址(可以使用映射將虛擬地址轉換成物理地址) ,後面是命名空間加類名)
2             object obj = Assembly.LoadFile(@"D:\普通文件袋\測試\ClassLibrary2\bin\Debug\ClassLibrary2.dll").CreateInstance("ClassLibrary2.Class2");
3             //4.創建一個作業
4             IJobDetail job2 = JobBuilder.Create(obj.GetType())
5                 .WithIdentity("demojob1", "groupa")
6                 .Build();

 

3.Quartz.NET 部署在IIS上,防止被動態回收(個人建議不要使用IIs伺服器

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 字元串對我編程人員來說是字元串時每天見面的常客,你不認識不熟悉他都不得行,字元串的拼接更是家常便飯,那麼在實際開發過程中實現字元串的拼接有哪一些方式呢?咋們一起來聊聊,來交流溝通,學習一波。也許你會說,那也太簡單了嘛,哈哈,那可不一定 ...
  • asp.net core 自定義基於 HttpContext 的 Serilog Enricher Intro 通過 HttpContext 我們可以拿到很多有用的信息,比如 Path/QueryString/RequestHeader 等請求信息, StatusCode/ResponseHeade ...
  • 前幾天用SerialPort類寫一個串口的測試程式,關閉串口的時候會讓界面卡死。網上大多數方法都是定義2個bool類型的標記Listening和Closing,關閉串口和接受數據前先判斷一下。我的方法是DataReceived事件處理程式用this.BeginInvoke()更新界面,不等待UI線程... ...
  • 最近在開發一個MVC框架,開發過程中考慮到以後開發依托於框架的項目,為了框架的維護更新升級,代碼肯定要和具體的業務工程分割開來,所以需要解決業務工程掛載在框架工程的問題,MVC與傳統的ASP.NET不同,WebForm項目只需要掛在虛擬目錄拷貝dll就可以訪問,但是MVC不可能去引用工程項目的dll ...
  • 時間如流水,只能流去不流回! 點贊再看,養成習慣,這是您給我創作的動力! 本文 Dotnet9 https://dotnet9.com 已收錄,站長樂於分享dotnet相關技術,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相關的Qt Quick和Qt Widgets等,只分 ...
  • 預設的reloadOnChange是true ...
  • 追求極致,永臻完美 A Beautiful WPF Control UI 一款簡單漂亮的WPF UI,融合部分開源框架的組件,為個人定製的UI,可供學者參考。 Nuget 搜索"AduSkin" 可直接導包使用 具體使用請參考 AduSkin.Demo 如有 WPF UI 外包 可聯繫我 技術交流 ...
  • 下麵我們繼續學習C#的語法。結構struct,C#中的結構和我們PLC中建立的UDT(結構體)是一樣的。裡面存儲了相關的不同類型的數據。 有一句話我覺得十分重要:方法是依存於結構和對象存在的。這以後我們會個更加深入的學習的。 Struct結構: 可以幫助我們一次性聲明不同類型的變數。 語法: [pu ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...