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

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

這篇具有很好參考價(jià)值的文章主要介紹了C# 定時(shí)服務(wù)之Hangfire使用、與Quartz的對(duì)比。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Querz:Windows任務(wù)計(jì)劃程序位于ASP.NET環(huán)境之外。它可以用來運(yùn)行任何類型的Windows程序。要添加Windows任務(wù),您需要登錄到服務(wù)器。

Hangfire通常在IIS進(jìn)程中運(yùn)行(盡管它也可以在控制臺(tái)應(yīng)用程序中運(yùn)行)。 Hangfire的主要優(yōu)點(diǎn)是開發(fā)人員無需登錄IIS服務(wù)器即可創(chuàng)建計(jì)劃任務(wù) - 在供應(yīng)商托管的IIS環(huán)境中,服務(wù)器訪問不可用時(shí)尤其有用。

定時(shí)任務(wù)調(diào)度問題,是一個(gè)老生常談的問題。網(wǎng)上有許多定時(shí)任務(wù)調(diào)度的解決方案,對(duì)于我而言很早以前主要是使用Window計(jì)劃和Window服務(wù)來做任務(wù)定時(shí)執(zhí)行,然后就開始使用定時(shí)任務(wù)調(diào)度框架Quartz.Net。但是卻一直沒有上手過Hangfire這個(gè)自帶后臺(tái)任務(wù)調(diào)度面板,可以在后臺(tái)手動(dòng)執(zhí)行任務(wù)的神奇的任務(wù)調(diào)度框架。前段時(shí)間終于開始對(duì)他下手了,通過在網(wǎng)上查閱了一些資料和查看了Hangfire在Github中的demo,終于在我自己的項(xiàng)目中用上了Hangfire。在該篇文章中主要簡單介紹一下什么是Hangfire,Hangfire的基本特征與優(yōu)點(diǎn)和使用PostgreSql作為存儲(chǔ)使用。

一、Hangfire是什么:

  Hangfire是一個(gè)開源的.NET任務(wù)調(diào)度框架,提供了內(nèi)置集成化的控制臺(tái),可以直觀明了的查看作業(yè)調(diào)度情況,并且Hangfire不需要依賴于單獨(dú)的應(yīng)用程序執(zhí)行(如:windows服務(wù),window計(jì)劃)。并且支持持久性存儲(chǔ)。

二、Hangfire使用條件:

Hangfire與特定的.NET應(yīng)用程序類型無關(guān)。您可以在ASP.NET Web應(yīng)用程序,非ASP.NET Web應(yīng)用程序,控制臺(tái)應(yīng)用程序或Windows服務(wù)中使用它。以下是要求:

1.NET Framework 4.5

2.永久存儲(chǔ)(Hangfire將后臺(tái)作業(yè)和其他與處理有關(guān)的信息保留在永久性存儲(chǔ)器中,所以需要存儲(chǔ)庫來存儲(chǔ)如:MS SQL Server,Redis,MySQL,PostgreSql等)

3.Newtonsoft.Json庫≥5.0.1

三、Hangfire的基本特征與優(yōu)點(diǎn):

通過官網(wǎng)中的一張圖片便可知道它是一個(gè)多么優(yōu)秀的任務(wù)調(diào)度框架,如下圖所示:

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

四、Hangfire安裝和使用:

在NuGet上有關(guān)于Hangfire的 一系列軟件包:

詳情地址:?NuGet Gallery | Packages matching Hangfire

1、安裝Hangfire所需NuGet包:

Hangfire、Hangfire.Core、Hangfire.PostgreSql?

如下圖:

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

?2、注冊(cè)Hangfire

在startup.cs入口文件中添加

 public void ConfigureServices(IServiceCollection services)
 {
     services.AddCustomHangfire(Configuration);
 }

?注冊(cè)

public static class CustomExtension
{

    /// <summary>
    /// 注冊(cè)Hangfire
    /// </summary>
    /// <param name="services"></param>
    /// <param name="configuration"></param>
    /// <returns></returns>
    public static IServiceCollection AddCustomHangfire(this IServiceCollection services, IConfiguration configuration)
    {
       
        #region Job
        services.AddHostedService<WisdomReportMonthJob>();

        services.AddHostedService<WisdomReportDayJob>();
        #endregion

        var vDbType = configuration["CurrentDbType"];

        services.AddHangfire(x => x.UsePostgreSqlStorage(configuration[$"DataBase:{vDbType}:JYTDBConnString"], new PostgreSqlStorageOptions
        {
            //如果設(shè)置為true,則創(chuàng)建數(shù)據(jù)庫表。默認(rèn)是true
            PrepareSchemaIfNecessary = Convert.ToBoolean(configuration["Hangfire:PrepareSchemaIfNecessary"]),
            QueuePollInterval = TimeSpan.FromSeconds(1)
        }));
        services.AddHangfireServer();

        return services;
    }
}

3、定義具體要執(zhí)行的定時(shí)任務(wù)

public class WisdomReportMonthJob : IHostedService
    {
        private readonly IConfiguration _Configuration; 

        /// <summary>
        ///
        /// </summary>
        public WisdomReportMonthJob(IConfiguration configuration)
        {
            _Configuration = configuration;
        }
        
        /// <summary>
        /// 開啟
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task StartAsync(CancellationToken cancellationToken)
        {
            try
            {
                Hangfire.RecurringJob.AddOrUpdate("WisdomRunReportMonthJob", () => WisdomReportMonthJobExec(), Cron.Hourly(10),TimeZoneInfo.Local);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "接口錯(cuò)誤:" + ex.Message);
            }
            return Task.CompletedTask;
        }
        /// <summary>
        /// 執(zhí)行
        /// </summary>
        public async Task WisdomReportMonthJobExec()
        {
            //TOdo 具體業(yè)務(wù)邏輯
        }

        /// <summary>
        /// 停止
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task StopAsync(CancellationToken cancellationToken)
        {
            await Task.Run(() =>
            {
                Log.Information("已停止運(yùn)行!");
            }, cancellationToken);
        }
    }

其中定時(shí)周期可以?

每個(gè)小時(shí)的哪一分鐘開始執(zhí)行?Cron.Hourly(10);

每天的具體哪個(gè)時(shí)間點(diǎn)執(zhí)行?Cron.Daily(0, 9);

當(dāng)然還有其他的一些執(zhí)行的周期格式,按照官方文檔的使用方式使用即可。

程序運(yùn)行后會(huì)自動(dòng)生成對(duì)應(yīng)的Hangfire數(shù)據(jù)庫,這里需要注意的是,執(zhí)行周期運(yùn)行后是持久性、周期性的,如果你變更了其中的周期,就需要重新將生成的Hangfire數(shù)據(jù)庫清空,然后重新運(yùn)行,保證定時(shí)任務(wù)能在你新修改的周期內(nèi)運(yùn)行。

如圖,即為自動(dòng)生成的數(shù)據(jù)庫:

C# 定時(shí)服務(wù)之Hangfire使用、與Quartz的對(duì)比文章來源地址http://www.zghlxwxcb.cn/news/detail-514486.html

到了這里,關(guān)于C# 定時(shí)服務(wù)之Hangfire使用、與Quartz的對(duì)比的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • springboot+redis+mysql+quartz-使用pipeline+lua技術(shù)將緩存數(shù)據(jù)定時(shí)更新到數(shù)據(jù)庫

    代碼講解:7.3點(diǎn)贊功能-定時(shí)持久化到數(shù)據(jù)庫-Java程序整合pipeline+lua_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1Lg4y1w7U9 代碼: blogLike_schedule/like08 · xin麒/XinQiUtilsOrDemo - 碼云 - 開源中國 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like08 數(shù)據(jù)庫表:

    2024年02月13日
    瀏覽(18)
  • springboot+redis+mysql+quartz-通過Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫

    springboot+redis+mysql+quartz-通過Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫

    代碼講解:6-點(diǎn)贊功能-定時(shí)持久化到數(shù)據(jù)庫-pipeline+lua-優(yōu)化pipeline_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代碼: blogLike_schedule/like06 · xin麒/XinQiUtilsOrDemo - 碼云 - 開源中國 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like06 數(shù)據(jù)庫表的

    2024年02月16日
    瀏覽(28)
  • springboot+redis+mysql+quartz-通過Java操作jedis定時(shí)使用lua腳本獲取緩存數(shù)據(jù)并更新數(shù)據(jù)庫

    springboot+redis+mysql+quartz-通過Java操作jedis定時(shí)使用lua腳本獲取緩存數(shù)據(jù)并更新數(shù)據(jù)庫 代碼講解:7.1點(diǎn)贊功能-定時(shí)持久化到數(shù)據(jù)庫-Java整合lua_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1ZX4y1H7JT/ 代碼: blogLike_schedule/like07 · xin麒/XinQiUtilsOrDemo - 碼云 - 開源中國 (gitee.com) https://gitee

    2024年02月13日
    瀏覽(17)
  • Quartz實(shí)戰(zhàn):基于Quartz實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)調(diào)度,實(shí)現(xiàn)定時(shí)任務(wù)的增刪改查

    Quartz實(shí)戰(zhàn):基于Quartz實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)調(diào)度,實(shí)現(xiàn)定時(shí)任務(wù)的增刪改查

    Quartz使用文檔,使用Quartz實(shí)現(xiàn)動(dòng)態(tài)任務(wù),Spring集成Quartz,Quartz集群部署,Quartz源碼分析 Quartz使用文檔,使用Quartz實(shí)現(xiàn)動(dòng)態(tài)任務(wù),Spring集成Quartz,Quartz集群部署,Quartz源碼分析 此處省略了SysJob實(shí)體類,以及Mapper等對(duì)數(shù)據(jù)庫的操作。 本文只是大致實(shí)現(xiàn)一個(gè)基于Quartz實(shí)現(xiàn)定時(shí)任務(wù)

    2024年02月15日
    瀏覽(23)
  • 使用C#創(chuàng)建安裝Windows服務(wù)程序(干貨)

    使用C#創(chuàng)建安裝Windows服務(wù)程序(干貨)

    開發(fā)語言:C# 開發(fā)環(huán)境: Visual Studio 2022 微軟官方文檔:https://learn.microsoft.com/zh-cn/dotnet/framework/windows-services/ 最近在公司要求使用Windows服務(wù)作為消息隊(duì)列的消費(fèi)者,所以自行研究了一下C#中Windows服務(wù)如何創(chuàng)建以及如何使用,以及部署的方式。我是西瓜程序猿,此篇記錄一下供

    2024年02月12日
    瀏覽(19)
  • 定時(shí)任務(wù)組件Quartz

    定時(shí)任務(wù)組件Quartz

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

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

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

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

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

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

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

    2024年02月09日
    瀏覽(36)
  • 【微服務(wù)】springboot整合quartz使用詳解

    目錄 一、前言 二、quartz介紹 2.1 quartz概述 2.2 quartz優(yōu)缺點(diǎn) 2.3 quartz核

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

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

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

    2024年02月04日
    瀏覽(37)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包