日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

.Net Core使用Coravel實現任務調度的完整步驟

瀏覽:359日期:2022-06-08 13:50:37
目錄
  • 前言
  • 簡介
  • 用法
  • 原理
  • 總結
  • 參考鏈接

前言

前段時間需要在一個新項目里添加兩個后臺任務,去定時請求兩個供應商的API來同步數據;由于項目本身只是一個很小的服務,不太希望引入太重的框架,同時也沒持久化要求;于是我開始尋找在Quartz.Net、Hangfire之外,是否還有更為輕量級的框架滿足我的要求,最終我選擇了Coravel.

簡介

Coravel是一個專為.NET Core設計的.NET Standard庫,除了任務調度,還提供了像隊列、緩存、郵件等其它高級功能。特點就是對開發者十分友好,接入十分簡單、優雅、流暢,接近于零配置。
作為一個生于2018年的年輕項目,后發優勢明顯,一開始就是基于.Net Standard 2.0實現,沒有歷史負擔,同時又可以利用很多.Net Core新特性。

用法

首先安裝Coravel包

dotnet add package coravel

下面演示在.Net 6 Minimal API項目中接入Coravel并設置兩個定時任務,是不是非常簡單:)

using Coravel;

var builder = WebApplication.CreateBuilder(args);

//只使用Coravel的任務調度功能
builder.Services.AddScheduler();

//注冊你自己的調度任務
builder.Services.AddTransient<YourCoravelJob1>();
builder.Services.AddTransient<YourCoravelJob2>();

var app = builder.Build();

//配置任務
app.Services.UseScheduler(scheduler =>
    {
scheduler.Schedule<YourCoravelJob1>().EveryFiveMinutes(); //每5分鐘執行一次Job1
scheduler.Schedule<YourCoravelJob2>().Hourly().Monday(); // 每周一每小時執行一次
    });

Coravel預先定義好了很多常用的間隔頻率,非常的全面,像上面用到的 EveryFiveMinutes() 和 Hourly(),是不是非常的簡單優雅;當然Coravel也支持Cron表達式。

Invocable 是Coravel中的核心概念,代表一個獨立的任務,上面的YourCoravelJob1和YourCoravelJob2就是 Invocable,Coravel直接調度這些Invocable
要創建你自己的Invocable,只需實現 IInvocable接口,在 Invoke方法中編碼你的任務。

public class YourCoravelJob1 : IInvocable
    {
private readonly ILogger _logger;

public YourCoravelJob1(ILogger<YourCoravelJob1> logger)
{
    _logger = logger;
}

public async Task Invoke()
{
     _logger.LogInformation("start..");
}
    }
}

原理

Coravel使用是的.Net Core 2.0引入的IHostedService來實現后臺定時任務。(因此只有.Net Core 2.0以上的項目才能使用Coravel)

public interface IHostedService
{
    Task StartAsync(CancellationToken cancellationToken);
    Task StopAsync(CancellationToken cancellationToken);
}

SchedulerHost即實現了IHostedService接口,在 其StartAsync方法中,當程序完全啟動時,注冊了一個的Timer

public Task StartAsync(CancellationToken cancellationToken)
{
    this._lifetime.ApplicationStarted.Register(InitializeAfterAppStarted);
    return Task.CompletedTask;
}

private void InitializeAfterAppStarted()
{
    this._timer = new Timer(this.RunSchedulerPerSecondAsync, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
}

private async void RunSchedulerPerSecondAsync(object state)
{
 if (this._schedulerEnabled)
 {
   await this._scheduler.RunSchedulerAsync();
  }
}

每秒調用 RunSchedulerAsync 激活到點的Invocable,同時會根據情況將任務分組,在單獨的線程分開執行。從這里可以看到Coravel是支持秒級任務的。

在 StopAsync 方法中,會先等待正在執行的任務完成才會關閉,這個功能還是比較重要。

public async Task StopAsync(CancellationToken cancellationToken)
{
    this._schedulerEnabled = false; // Prevents changing the timer from firing scheduled tasks.
    this._timer?.Change(Timeout.Infinite, 0);

    this._scheduler.CancelAllCancellableTasks();

    // If a previous scheduler execution is still running (due to some long-running scheduled task[s])
    // we don"t want to shutdown while they are still running.
    if (this._scheduler.IsRunning)
    {
this._logger.LogWarning(ScheduledTasksRunningMessage);
    }

    while (this._scheduler.IsRunning)
    {
await Task.Delay(50);
    }
}

總結

本文介紹一個對開發者友好的、輕量級、零配置的.Net Standard庫Coravel,并演示了如何使用Coravel在.Net 6 Minimal API中創建定時任務,最后淺析了的實現原理。作為一個年輕的框架,Coravel站在了巨人的肩膀上,相比Quartz.Net、Hangfire,也擁有很多亮點特性,很值得嘗試。

到此這篇關于.Net Core使用Coravel實現任務調度的文章就介紹到這了,更多相關.Net Core Coravel實現任務調度內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

參考鏈接

  • https://github.com/jamesmh/coravel
  • https://docs.coravel.net
  • https://docs.microsoft.com/en-us/dotnet/core/extensions/generic-host
標簽: ASP.NET
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品一区二区三区中文字幕| 美国三级日本三级久久99| 亚洲精品婷婷| 日韩精品高清不卡| 亚洲精品一级| 国产精品免费不| 国产91在线播放精品| 91视频久久| 91精品电影| 中文字幕亚洲影视| 日韩国产精品久久久| 在线精品亚洲| 99久久亚洲精品| 最新国产精品视频| 精品国产亚洲一区二区三区| 久久精品国产成人一区二区三区| 视频在线不卡免费观看| 欧美日韩免费观看视频| 午夜一级久久| 日韩av一区二区在线影视| 国产精品一区二区美女视频免费看| 精品国产欧美日韩| 亚洲在线成人| 国产精品久一| 欧美网站在线| 国产精品啊啊啊| 亚洲国产不卡| 久久亚州av| 亚洲视频电影在线| 日韩欧美午夜| 日韩av一区二区三区四区| 欧美日韩一二三四| 日本免费一区二区视频| 99热国内精品| 蜜臀久久99精品久久久久宅男| 欧美色图一区| 国产极品模特精品一二| 免费观看在线综合| 三上悠亚国产精品一区二区三区| 日韩极品在线观看| 黄色在线一区| 999久久久国产精品| 久久精品福利| 国产亚洲字幕| 亚洲欧洲av| 亚洲综合三区| 黑丝一区二区三区| 国产91一区| 黑森林国产精品av| 久久99蜜桃| 日韩综合小视频| 亚洲欧美日本日韩| 亚洲国产专区校园欧美| 视频二区不卡| 日韩一区三区| 在线手机中文字幕| 国产粉嫩在线观看| av在线资源| 日韩福利视频网| 岛国av免费在线观看| 欧美精品97| 精品视频亚洲| 亚洲啊v在线| 人人精品亚洲| 999国产精品| 宅男在线一区| 六月婷婷一区| 青草国产精品| 国产精品视频一区视频二区| 国产精品自在| sm捆绑调教国产免费网站在线观看 | 尤物tv在线精品| 欧美国产另类| 国产91欧美| 国产主播一区| 国产韩日影视精品| 久久av一区| 一区二区三区四区日韩| 国产精品极品| 久久免费视频66| 国产精品一区免费在线| 国产suv精品一区二区四区视频| 999久久久免费精品国产| 亚洲一区国产一区| 国产精品久久久久久模特| 91看片一区| 亚洲1区在线| 色婷婷色综合| 视频一区欧美精品| 精品国产a一区二区三区v免费| 国产不卡精品| 日本在线不卡视频| 在线精品亚洲欧美日韩国产| 蜜臀久久99精品久久久画质超高清| 国产精品美女在线观看直播| 国产精品99免费看| 国产精品视频首页| 久久亚洲色图| 中文字幕系列一区| 国产精品一国产精品k频道56| 亚洲女同一区| 国产在线观看www| 国产免费av国片精品草莓男男| 91九色精品| 国模精品一区| 91精品啪在线观看国产18| 欧美日韩在线网站| 麻豆国产91在线播放| 中文不卡在线| 午夜电影亚洲| 日韩中文影院| 国产精品多人| 蜜臀91精品一区二区三区| 久久精品亚洲欧美日韩精品中文字幕| 欧美亚洲免费| 日本视频一区二区| 综合欧美精品| 免费不卡在线视频| 久久99伊人| 999国产精品视频| 日韩福利视频导航| 在线观看亚洲精品福利片| 国产精品毛片在线看| 波多野结衣一区| 99视频在线精品国自产拍免费观看| 久久精品中文| 日韩一级欧洲| 在线观看亚洲精品福利片| 九九久久婷婷| 激情五月综合| 日本韩国欧美超级黄在线观看| 色欧美自拍视频| 99久精品视频在线观看视频| 国产精品亲子伦av一区二区三区| 欧美一区二区性| 中文在线а√在线8| 日韩久久精品| 亚洲欧洲午夜| 亚洲免费观看高清完整版在线观| 亚洲激情av| 亚洲精品日本| 久久久精品国产**网站| 日韩欧美午夜| 免费成人在线观看| 免费在线播放第一区高清av| 国产网站在线| 蜜桃视频一区二区| 国产伦精品一区二区三区千人斩| 日韩av在线播放网址| 国产精品美女久久久浪潮软件| 国产亚洲激情| 国产精品欧美一区二区三区不卡| 久久亚州av| 国产精品人人爽人人做我的可爱| 日本成人手机在线| 综合日韩av| 日本中文字幕视频一区| 精品国产不卡| 欧美中文日韩| 日韩一区电影| 国产日韩三级| 伊人久久大香线蕉av不卡| 福利欧美精品在线| 精品久久久亚洲| 青青青国产精品| 卡一卡二国产精品| 噜噜噜久久亚洲精品国产品小说| 欧美日本不卡高清| 国产婷婷精品| 另类专区亚洲| 国产激情久久| 婷婷五月色综合香五月| 亚洲特色特黄| 成人在线免费观看91| 91精品国产自产在线丝袜啪| 久久精品高清| 成人午夜精品| 麻豆高清免费国产一区| 日本一区二区三区中文字幕| 日韩视频二区| www.com.cn成人| 国产一区2区| 久久伊人亚洲| 国产日韩1区| 91成人在线精品视频| 三级久久三级久久久| 视频在线在亚洲| 亚洲黄页一区| 欧美日韩少妇| 91精品电影| 三级欧美韩日大片在线看| 午夜在线播放视频欧美| 亚洲中字黄色| 蜜臀av性久久久久蜜臀aⅴ流畅 | 99久久精品费精品国产| 在线观看精品| 日韩在线视频精品| 中文字幕人成乱码在线观看| 国产成人在线中文字幕| 国产一区二区三区视频在线|