當前位置: 妍妍網 > 碼農

【庫】Coravel Schedule任務排程

2024-02-15碼農

Coravel 透過使高級應用程式功能(如任務/作業排程、排隊、緩存、信件(以及更多!))易於存取且易於使用,幫助開發人員快速啟動並執行 .NET 應用程式。具有簡單、富有表現力和直接的語法。

下面是簡單的用法,透過註入Scheduler和在中介軟體中定義排程的實作,來完成簡單的定時使用。

using Coravel;var builder = WebApplication.CreateBuilder(args);//註入builder.Services.AddScheduler();var app = builder.Build();//使用中介軟體app.Services.UseScheduler(scheduler => { scheduler.Schedule(() => Console.WriteLine("每隔兩秒執行一次") ) .EverySeconds(2); });

關於排程使用的頻次見下面的方法:

EverySecond() - 每秒執行任務

EveryFiveSeconds() - 每五秒執行任務

EveryTenSeconds() - 每十秒執行任務

EveryFifteenSeconds() - 每十五秒執行任務

EveryThirtySeconds() - 每三十秒執行任務

EverySeconds(3) - 每3秒執行任務

EveryMinute() - 每分鐘執行任務

EveryFiveMinutes() - 每五分鐘執行任務

EveryTenMinutes() - 每十分鐘執行任務

EveryFifteenMinutes() - 每十五分鐘執行任務

EveryThirtyMinutes() - 每三十分鐘執行任務

Hourly() - 每小時執行任務

H ourlyAt(12) - 每小時的12分時執行任務

Daily() - 每天午夜執行任務

DailyAtHour(13) - 每天下午1點 UTC 執行任務

DailyAt(13, 30) - 每天下午1點30分 UTC 執行任務

Weekly() - 每周執行任務

Monthly() - 每月執行任務(在每月1日午夜執行)

Cron("* * * * *") - 使用 Cron 運算式執行任務

另外,還可以透過定義實作IInvocable介面的類來定義排程器的功能,這樣解耦性更優雅一些。需要註意的是,無參構造的實作需要註入,有參則不需要。

using Coravel;using Coravel.Invocable;using Coravel.Scheduling.Schedule;var builder = WebApplication.CreateBuilder(args);builder.Services.AddScheduler();//這裏只註入無參的Invocable類builder.Services.AddTransient<MyInvocable2>();var app = builder.Build();app.Services.UseScheduler(scheduler => { scheduler .Schedule<MyInvocable2>() .EverySeconds(2); scheduler .ScheduleWithParams<MyInvocable>(3) .EverySeconds(3); });app.Run();public class MyInvocable : IInvocable{ readonly ILogger<MyInvocable> _logger; readonly int _seconds; public MyInvocable(ILogger<MyInvocable> logger, int seconds) { _logger = logger; _seconds = seconds; } public Task Invoke() { _logger.LogInformation("***每隔{int}秒執行一次", _seconds); return Task.CompletedTask; }}public class MyInvocable2 : IInvocable{ readonly ILogger<MyInvocable> _logger; public MyInvocable2(ILogger<MyInvocable> logger) { _logger = logger; } public Task Invoke() { _logger.LogInformation("---每隔兩秒執行一次"); return Task.CompletedTask; }}

Coravel排程簡單,直接,一些輕量級的排程可以采用。關於更多的排程資訊,可參考https://docs.coravel.net/Scheduler/。