国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#--使用Quartz實現(xiàn)定時任務(wù)

這篇具有很好參考價值的文章主要介紹了C#--使用Quartz實現(xiàn)定時任務(wù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C#小技巧–使用Quartz實現(xiàn)定時任務(wù)

Quartz.net 簡介

Quartz.NET是一個開源的作業(yè)調(diào)度框架,非常適合在平時的工作中,定時輪詢數(shù)據(jù)庫同步,定時郵件通知,定時處理數(shù)據(jù)等。
Quartz.NET允許開發(fā)人員根據(jù)時間間隔(或天)來調(diào)度作業(yè)。它實現(xiàn)了作業(yè)和觸發(fā)器的多對多關(guān)系,還能把多個作業(yè)與不同的觸發(fā)器關(guān)聯(lián)。整合了Quartz.NET的應(yīng)用程序可以重用來自不同事件的作業(yè),還可以為一個事件組合多個作業(yè)。

Quartz的基本組成部分

調(diào)度器:Scheduler 任務(wù):JobDetail 觸發(fā)器:Trigger,包括SimpleTrigger和CronTrigger
給計劃者一個工作,讓它在什么時間下執(zhí)行這個工作。

任務(wù)的實現(xiàn)

將要定時執(zhí)行的任務(wù)代碼寫到Ijob接口實現(xiàn)的Excute方法中,時間到后會自動執(zhí)行這個任務(wù)。

參考

官方學(xué)習(xí)文檔:http://www.quartz-scheduler.net/documentation/index.html

使用實例介紹:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html

官方的源代碼下載:http://sourceforge.net/projects/quartznet/files/quartznet/

Demo搭建步驟

1.新建控制臺程序,nuget添加Quartz.net 的引用

2.新建job類,實現(xiàn)IJob接口

using Quartz;
using System;
using System.Threading.Tasks;

namespace RuanMou.AwaitAsync.ConsoleProject
{
    public class TestJob : IJob
    {
        public async Task Execute(IJobExecutionContext context)
        {
            await Task.Run(()=> 
            {
                Console.WriteLine($"當前時間:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
                Console.WriteLine("Hello!");
            });
        }
    }
}

3.創(chuàng)建Schedule,執(zhí)行任務(wù)

using System;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;

namespace RuanMou.AwaitAsync.ConsoleProject
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.創(chuàng)建調(diào)度單元
            Task<IScheduler> tsk = StdSchedulerFactory.GetDefaultScheduler();
            IScheduler scheduler = tsk.Result;
            //2.創(chuàng)建一個具體的作業(yè)即job(具體的job需要單獨在一個文件中執(zhí)行)
            IJobDetail job = JobBuilder.Create<TestJob>().WithIdentity("完成").Build();
            //3.創(chuàng)建并配置一個觸發(fā)器trigger,
            ITrigger _CtroTrigger = TriggerBuilder.Create()
                .WithIdentity("定時確認")
                .WithCronSchedule("0 51 16 ? * * ")
                .Build()
                as ITrigger;
            //4.將job和trigger加入到作業(yè)調(diào)度池中
            scheduler.ScheduleJob(job, _CtroTrigger);
            //5.開啟調(diào)度
            scheduler.Start();
            Console.ReadLine();
        }
    }
}

4.執(zhí)行結(jié)果

c# quartz,后端,c#,.net,開發(fā)語言

job 任務(wù)介紹

其實就是1.x版本中的,這個節(jié)點是用來定義每個具體的任務(wù)的,多個任務(wù)請創(chuàng)建多個job節(jié)點即可

  • name(必填) 任務(wù)名稱,同一個group中多個job的name不能相同,若未設(shè)置group則所有未設(shè)置group的job為同一個分組,如:sampleJob
  • group(選填) 任務(wù)所屬分組,用于標識任務(wù)所屬分組,如:sampleGroup
  • description(選填) 任務(wù)描述,用于描述任務(wù)具體內(nèi)容,如:Sample job for Quartz Server
  • job-type(必填) 任務(wù)類型,任務(wù)的具體類型及所屬程序集,格式:實現(xiàn)了IJob接口的包含完整命名空間的類名,程序集名稱,如:Quartz.Server.SampleJob,
    Quartz.Server
  • durable(選填) 具體作用不知,官方示例中默認為true,如:true
  • recover(選填) 具體作用不知,官方示例中默認為false,如:false

trigger 任務(wù)觸發(fā)器介紹

用于定義使用何種方式出發(fā)任務(wù)(job),同一個job可以定義多個trigger ,多個trigger 各自獨立的執(zhí)行調(diào)度,每個trigger 中必須且只能定義一種觸發(fā)器類型(calendar-interval、simple、cron)

calendar-interval 一種觸發(fā)器類型,使用較少,此處略過
simple 簡單任務(wù)的觸發(fā)器,可以調(diào)度用于重復(fù)執(zhí)行的任務(wù)
  • name(必填) 觸發(fā)器名稱,同一個分組中的名稱必須不同
  • group(選填) 觸發(fā)器組
  • description(選填) 觸發(fā)器描述
  • job-name(必填) 要調(diào)度的任務(wù)名稱,該job-name必須和對應(yīng)job節(jié)點中的name完全相同
  • job-group(選填) 調(diào)度任務(wù)(job)所屬分組,該值必須和job中的group完全相同
  • start-time(選填)
    任務(wù)開始執(zhí)行時間utc時間,北京時間需要+08:00,如:2012-04-01T08:00:00+08:00表示北京時間2012年4月1日上午8:00開始執(zhí)行,注意服務(wù)啟動或重啟時都會檢測此屬性,若沒有設(shè)置此屬性或者start-time設(shè)置的時間比當前時間較早,則服務(wù)啟動后會立即執(zhí)行一次調(diào)度,若設(shè)置的時間比當前時間晚,服務(wù)會等到設(shè)置時間相同后才會第一次執(zhí)行任務(wù),一般若無特殊需要請不要設(shè)置此屬性
  • repeat-count(必填)
    任務(wù)執(zhí)行次數(shù),如:-1表示無限次執(zhí)行,10表示執(zhí)行10次
  • repeat-interval(必填)
    任務(wù)觸發(fā)間隔(毫秒),如:10000 每10秒執(zhí)行一次
cron復(fù)雜任務(wù)觸發(fā)器–使用cron表達式定制任務(wù)調(diào)度(強烈推薦)
  • name(必填) 觸發(fā)器名稱,同一個分組中的名稱必須不同
  • group(選填) 觸發(fā)器組d
  • escription(選填) 觸發(fā)器描述
  • job-name(必填) 要調(diào)度的任務(wù)名稱,該job-name必須和對應(yīng)job節(jié)點中的name完全相同
  • job-group(選填) 調(diào)度任務(wù)(job)所屬分組,該值必須和job中的group完全相同
  • start-time(選填) 任務(wù)開始執(zhí)行時間utc時間,北京時間需要+08:00,如:2012-04-01T08:00:00+08:00表示北京時間2012年4月1日上午8:00開始執(zhí)行,注意服務(wù)啟動或重啟時都會檢測此屬性,若沒有設(shè)置此屬性,服務(wù)會根據(jù)cron-expression的設(shè)置執(zhí)行任務(wù)調(diào)度;若start-time設(shè)置的時間比當前時間較早,則服務(wù)啟動后會忽略掉cron-expression設(shè)置,立即執(zhí)行一次調(diào)度,之后再根據(jù)cron-expression執(zhí)行任務(wù)調(diào)度;若設(shè)置的時間比當前時間晚,則服務(wù)會在到達設(shè)置時間相同后才會應(yīng)用cron-expression,根據(jù)規(guī)則執(zhí)行任務(wù)調(diào)度,一般若無特殊需要請不要設(shè)置此屬性
  • cron-expression(必填) cron表達式,如:0/10 * * * * ?每10秒執(zhí)行一次

Quartz的cron表達式

官方英文介紹地址:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html

cron expressions 整體上還是非常容易理解的,只有一點需要注意:"?"號的用法,看下文可以知道“?”可以用在 day of
month 和 day of week中,他主要是為了解決如下場景,如:每月的1號的每小時的31分鐘,正確的表達式是:* 31 * 1 *
?,而不能是:* 31 * 1 * *,因為這樣代表每周的任意一天。

由7段構(gòu)成:秒 分 時 日 月 星期 年(可選)
"-" :表示范圍  MON-WED表示星期一到星期三
"," :表示列舉 MON,WEB表示星期一和星期三
"*" :表是“每”,每月,每天,每周,每年等
"/" :表示增量:0/15(處于分鐘段里面) 每15分鐘,在0分以后開始,3/20 每20分鐘,從3分鐘以后開始
"?" :只能出現(xiàn)在日,星期段里面,表示不指定具體的值
"L" :只能出現(xiàn)在日,星期段里面,是Last的縮寫,一個月的最后一天,一個星期的最后一天(星期六)
"W" :表示工作日,距離給定值最近的工作日
"#" :表示一個月的第幾個星期幾,例如:"6#3"表示每個月的第三個星期五(1=SUN...6=FRI,7=SAT

官方實例文章來源地址http://www.zghlxwxcb.cn/news/detail-716366.html

Expression Meaning
0 0 12 * * ? 每天中午12點觸發(fā)
0 15 10 ? * * 每天上午10:15觸發(fā)
0 15 10 * * ? 每天上午10:15觸發(fā)
0 15 10 * * ? * 每天上午10:15觸發(fā)
0 15 10 * * ? 2005 2005年的每天上午10:15觸發(fā)
0 * 14 * * ? 在每天下午2點到下午2:59期間的每1分鐘觸發(fā)
0 0/5 14 * * ? 在每天下午2點到下午2:55期間的每5分鐘觸發(fā)
0 0/5 14,18 * * ? 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發(fā)
0 0-5 14 * * ? 在每天下午2點到下午2:05期間的每1分鐘觸發(fā)
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44觸發(fā)
0 15 10 ? * MON-FRI 周一至周五的上午10:15觸發(fā)
0 15 10 15 * ? 每月15日上午10:15觸發(fā)
0 15 10 L * ? 每月最后一日的上午10:15觸發(fā)
0 15 10 L-2 * ? Fire at 10:15am on the 2nd-to-last last day of every month
0 15 10 ? * 6L 每月的最后一個星期五上午10:15觸發(fā)
0 15 10 ? * 6L Fire at 10:15am on the last Friday of every month
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一個星期五上午10:15觸發(fā)
0 15 10 ? * 6#3 每月的第三個星期五上午10:15觸發(fā)
0 0 12 1/5 * ? Fire at 12pm (noon) every 5 days every month, starting on the first day of the month.
0 11 11 11 11 ? Fire every November 11th at 11:11am.

到了這里,關(guān)于C#--使用Quartz實現(xiàn)定時任務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【SpringBoot】82、SpringBoot集成Quartz實現(xiàn)動態(tài)管理定時任務(wù)

    1、Quartz簡介 在 SpringBoot 中,實現(xiàn)定時任務(wù)的方法有很多種,其中 Quartz 是較為靈活的一種,為在 Java 應(yīng)用程序中進行作業(yè)調(diào)度提供了簡單卻強大的機制。 Quartz 是一個開源的作業(yè)調(diào)度框架,它完全由 Java 寫成,并設(shè)計用于 J2SE 和 J2EE 應(yīng)用中。它提供了巨大的靈 活性而不犧牲簡

    2024年02月11日
    瀏覽(36)
  • boot-admin整合Quartz實現(xiàn)動態(tài)管理定時任務(wù)

    boot-admin整合Quartz實現(xiàn)動態(tài)管理定時任務(wù)

    淄博燒烤爆紅出了圈,當你坐在八大局的燒烤攤,面前是火爐、烤串、小餅和蘸料,音樂響起,啤酒倒?jié)M,燒烤靈魂的party即將開場的時候,你系統(tǒng)中的Scheduler(調(diào)試器),也自動根據(jù)設(shè)定的Trigger(觸發(fā)器),從容優(yōu)雅的啟動了一系列的Job(后臺定時任務(wù))。工作一切早有安

    2023年04月26日
    瀏覽(39)
  • Quartz + SpringBoot 實現(xiàn)定時任務(wù)(多任務(wù),多執(zhí)行時間)代碼模板(直接CV即可)

    Quartz + SpringBoot 實現(xiàn)定時任務(wù)(多任務(wù),多執(zhí)行時間)代碼模板(直接CV即可)

    quartz 是一款開源且豐富特性的Java 任務(wù)調(diào)度庫 ,用于實現(xiàn)任務(wù)調(diào)度和定時任務(wù)。它支持各種任務(wù)類型和靈活的配置選項,具備作業(yè)持久化、集群和分布式調(diào)度、錯誤處理和重試機制等功能。Quartz被廣泛應(yīng)用于各種應(yīng)用程序中,提供可靠和靈活的任務(wù)調(diào)度解決方案。 我們想要

    2024年02月08日
    瀏覽(22)
  • Spring Boot集成Quartz實現(xiàn)定時任務(wù)的動態(tài)創(chuàng)建、啟動、暫停、恢復(fù)、刪除

    Spring Boot集成Quartz實現(xiàn)定時任務(wù)的動態(tài)創(chuàng)建、啟動、暫停、恢復(fù)、刪除

    一、整個 Quartz 的代碼流程基本基本如下: 首先需要創(chuàng)建我們的任務(wù)(Job),比如取消訂單、定時發(fā)送短信郵件之類的,這是我們的任務(wù)主體,也是寫業(yè)務(wù)邏輯的地方。 創(chuàng)建任務(wù)調(diào)度器(Scheduler),這是用來調(diào)度任務(wù)的,主要用于啟動、停止、暫停、恢復(fù)等操作,也就是那幾個api的

    2024年02月11日
    瀏覽(21)
  • C# 定時服務(wù)之Hangfire使用、與Quartz的對比

    C# 定時服務(wù)之Hangfire使用、與Quartz的對比

    Querz :Windows任務(wù)計劃程序位于ASP.NET環(huán)境之外。它可以用來運行任何類型的Windows程序。要添加Windows任務(wù),您需要登錄到服務(wù)器。 Hangfire 通常在IIS進程中運行(盡管它也可以在控制臺應(yīng)用程序中運行)。 Hangfire的主要優(yōu)點是開發(fā)人員無需登錄IIS服務(wù)器即可創(chuàng)建計劃任務(wù) - 在供應(yīng)

    2024年02月11日
    瀏覽(15)
  • 定時任務(wù)組件Quartz

    定時任務(wù)組件Quartz

    quartz的核心概念 三步 job:做什么事,比如查詢當前時間,定時清理圖片 trigger:什么時候做 scheduler:什么時候做什么事 需要引入依賴 SpringBoot 通過注解配置Quartz 再運行SpringBoot的啟動類。?

    2024年01月23日
    瀏覽(23)
  • SpringBoot——Quartz 定時任務(wù)

    SpringBoot——Quartz 定時任務(wù)

    優(yōu)質(zhì)博文:IT-BLOG-CN 【1】添加 Scheduled 相關(guān)依賴,它是 Spring 自帶的一個 jar 包因此引入 Spring 的依賴: 【2】導(dǎo)入依賴之后,就可以在 Maven Dependencies 中看到相關(guān)的依賴,如下: 【3】編寫定時任務(wù)類:重點是 @Scheduled 注解和 cron 屬性; 【4】在啟動類中開啟定時任務(wù)的啟動:

    2024年02月05日
    瀏覽(24)
  • Spring Boot進階(68):如何用SpringBoot輕松實現(xiàn)定時任務(wù)?集成Quartz來幫你!(附源碼)

    Spring Boot進階(68):如何用SpringBoot輕松實現(xiàn)定時任務(wù)?集成Quartz來幫你!(附源碼)

    ????????Quartz是一個非常流行的開源調(diào)度框架,它提供了許多強大的功能,如定時任務(wù)調(diào)度、作業(yè)管理、任務(wù)持久化等。而SpringBoot是目前Java開發(fā)中非常流行的框架之一,其對各種開源框架集成非常方便。本篇文章將介紹如何在SpringBoot中集成Quartz,以便于更好的管理和調(diào)度

    2024年02月07日
    瀏覽(26)
  • SpringBoot整合定時任務(wù)技術(shù)Quartz

    SpringBoot整合定時任務(wù)技術(shù)Quartz

    個人簡介:Java領(lǐng)域新星創(chuàng)作者;阿里云技術(shù)博主、星級博主、專家博主;正在Java學(xué)習(xí)的路上摸爬滾打,記錄學(xué)習(xí)的過程~ 個人主頁:.29.的博客 學(xué)習(xí)社區(qū):進去逛一逛~ # 一、SpringBoot整合定時任務(wù)技術(shù)Quartz ??Quartz應(yīng)用場景 Spring Boot整合Quartz的定時任務(wù)技術(shù)可以應(yīng)用于許多不同

    2024年02月09日
    瀏覽(34)
  • 分布式定時任務(wù)調(diào)度框架Quartz

    分布式定時任務(wù)調(diào)度框架Quartz

    Quartz是一個定時任務(wù)調(diào)度框架,比如你遇到這樣的問題: 比如淘寶的待支付功能,后臺會在你生成訂單后24小時后,查看訂單是否支付,未支付則取消訂單 比如vip的每月自動續(xù)費功能 … 想定時在某個時間,去做某件事 Quartz是一套輕量級的任務(wù)調(diào)度框架,只需要定義了 Job(

    2024年02月04日
    瀏覽(37)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包