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

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

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

瀏覽:354日期: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久久,三上悠亚国产精品一区二区三区
久久久五月天| 久久激情av| 国产日韩一区二区三免费高清 | 91精品麻豆| 国产日产精品_国产精品毛片| 免费精品视频在线| 99热精品在线观看| 亚洲欧美日本国产| 日韩超碰人人爽人人做人人添| 欧美国产专区| 久久亚洲道色| 久久精品亚洲欧美日韩精品中文字幕| 麻豆视频观看网址久久| 欧美久久一区二区三区| 欧美久久一区二区三区| 国产免费久久| 精品日产乱码久久久久久仙踪林| 日韩高清国产一区在线| 日韩av中文字幕一区二区三区| 日韩激情一二三区| 国产日韩欧美一区在线| 国产精品日本一区二区不卡视频| 欧美久久一区二区三区| 国产精品网在线观看| 麻豆高清免费国产一区| 欧美极品中文字幕| 国产精品毛片一区二区在线看| 91中文字幕精品永久在线| 成人羞羞视频播放网站| 午夜欧美精品| 日韩精品福利一区二区三区| 国产精品一页| 久久精品国产网站| 日韩深夜视频| 欧美精品一二| 亚洲乱亚洲高清| 国产精品国产三级在线观看| 欧美国产免费| 久久久久国产| 免费看的黄色欧美网站| 日韩精品国产欧美| 麻豆视频在线观看免费网站黄| 成人福利视频| 在线亚洲观看| 国产精品久久| 国产一区调教| re久久精品视频| 日韩电影免费网站| 久久不卡日韩美女| 久久av电影| 欧美精品成人| 国产成人免费精品| 国产成人1区| 日韩视频二区| 精品国产网站| 五月激情久久| 亚洲人成毛片在线播放女女| 婷婷综合成人| 国产a亚洲精品| 免费看精品久久片| 国产一区二区精品久| 伊人久久亚洲美女图片| 中文字幕av一区二区三区人| 国产精品久久亚洲不卡| 激情婷婷久久| 日本在线视频一区二区| 国内揄拍国内精品久久| 精品一区欧美| 色婷婷亚洲mv天堂mv在影片| 欧美一区网站| 亚洲欧洲国产精品一区| 中文字幕av一区二区三区人| 91精品二区| 精品一区二区三区中文字幕 | 欧洲一区二区三区精品| 欧美一区成人| 欧美+亚洲+精品+三区| 免费视频亚洲| 色综合www| 黄色av一区| 四虎成人av| 国产精品流白浆在线观看| 青青草国产成人99久久| 国产欧美日韩亚洲一区二区三区| 国产成人精品一区二区免费看京| 在线一区视频观看| 久久国产精品久久w女人spa| 日本欧美大码aⅴ在线播放| 亚州av日韩av| 国产亚洲字幕| 成人污污视频| 日韩精品看片| 欧美综合精品| 亚洲主播在线| 久久精品国内一区二区三区| 国产日产精品_国产精品毛片| 国产综合色产| 国产午夜精品一区在线观看| 在线亚洲免费| 欧洲av一区二区| 91精品精品| 欧美成a人片免费观看久久五月天| 国产成人精品一区二区免费看京| 最近国产精品视频| 欧美亚洲国产激情| 久久精品福利| 欧美另类中文字幕| 日韩av二区在线播放| 欧美亚洲精品在线| 久久精品超碰| 日韩高清欧美激情| 日韩高清国产一区在线| 99国产精品99久久久久久粉嫩| 欧美影院精品| 在线观看亚洲精品福利片| 合欧美一区二区三区| 91精品久久久久久久久久不卡| 久久久亚洲欧洲日产| 欧美综合精品| 97久久亚洲| 国产精品激情电影| 蜜桃av一区二区三区电影| 日韩中文在线电影| 日韩在线短视频| 天堂а√在线最新版中文在线| 老司机精品在线| 美日韩一区二区三区| 人人爱人人干婷婷丁香亚洲| 国产毛片精品| 欧美激情另类| 免费观看亚洲| 91精品国产福利在线观看麻豆| 亚洲天堂资源| 精品色999| 国产盗摄——sm在线视频| 欧美丰满日韩| 欧美日韩高清| 免费不卡在线观看| 欧美影院视频| 久久久久久自在自线| 午夜精品成人av| 韩国久久久久久| 一区在线视频观看| 亚洲女人av| 久久成人亚洲| 老司机精品视频网| 久久人人99| 亚洲免费一区二区| 国产一级成人av| 91视频久久| 香蕉久久久久久久av网站| 亚洲欧美激情诱惑| 日韩二区三区四区| 成人在线网站| 日韩一区精品视频| yellow在线观看网址| 亚洲综合电影| 国产精品日韩久久久| 国产精品v日韩精品v欧美精品网站| 老司机精品视频在线播放| 欧美va天堂在线| 国产精品一站二站| 黄色亚洲大片免费在线观看| 蜜臀精品一区二区三区在线观看 | 国产婷婷精品| 免费欧美在线视频| 国产精品白丝一区二区三区| 日韩成人高清| 国产精品一区二区三区www| 五月天综合网站| 久久精品国产免费| 久久国产精品亚洲77777| 欧美日韩一视频区二区| 亚洲深夜福利| 日韩电影免费网站| 久久99精品久久久野外观看| 成人免费电影网址| 欧美成人基地| 91嫩草精品| 久久国产小视频| 国产精品成人一区二区不卡| 鲁大师影院一区二区三区| 国产成人精品亚洲线观看| 国产乱子精品一区二区在线观看| 亚洲尤物在线| 久久尤物视频| 美女尤物国产一区| 水蜜桃精品av一区二区| 欧美激情福利| 日韩精品导航| 日韩精品一区二区三区中文在线| 午夜av成人| 欧美亚洲tv| 久久男女视频| 日韩大片在线| 免费欧美一区| 久久高清免费| 99久久精品网站| 久久中文视频| 蜜臀91精品国产高清在线观看|