【库】Coravel Schedule任务调度
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() - 每小时运行任务
HourlyAt(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; } }
文章来源微信公众号
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2009-02-22 页面中动态画有超连接的图
2008-02-22 .net知识和学习方法系列(八)static