推荐一个轻量级的任务调度开源项目。
01 项目简介
Coravel是一个.NET开源任务调度库,只需简单代码、几乎零配置就可以实现多种功能柜,如任务调度、队列、缓存、事件广播和邮件发送等。该项目特点就是让这些通常复杂的功能变得易于访问和使用,同时提供简洁、直观的语法。
02 核心功能
1、任务/作业调度:通过其流畅的代码内语法,让你能够轻松地在应用程序中设置和管理这些任务。
2、队列:提供了一个开箱即用的队列系统,它使用内存作为后端来异步处理任务,从而不会阻塞用户的 HTTP 请求,改善了应用的性能和用户体验。
3、缓存:为了提高应用程序的响应速度,Coravel 提供了一个简单易用的缓存 API。默认情况下,它使用内存缓存,但也支持数据库驱动(SQL Server、PostgreSQL),也可以自定义扩展缓存接口,以适应更复杂的缓存需求。
4、事件广播:可以构建松耦合的应用程序组件,这有助于提高应用程序的可维护性和灵活性。
5、邮件发送:简化了邮件发送过程,提供了内置的电子邮件友好的 Razor 模板、简单灵活的邮件 API,并且支持渲染电子邮件以进行视觉测试。此外,它还支持 SMTP、本地日志文件或自定义邮件器驱动程序。
03 使用示例
1、安装依赖库
dotnet tool install --global coravel-cli
2、任务调度
//启用 services.AddScheduler(); var provider = app.ApplicationServices; provider.UseScheduler(scheduler => { scheduler.Schedule( () => Console.WriteLine("工作日每一分钟执行一次。") ) .EveryMinute() .Weekday(); });
3、队列
IQueue _queue; public HomeController(IQueue queue) { this._queue = queue; } //使用队列 this._queue.QueueAsyncTask(async() => { await Task.Delay(1000); Console.WriteLine("这是队列!"); });
4、广播
var provider = app.ApplicationServices; IEventRegistration registration = provider.ConfigureEvents(); //注册和监听 registration .Register<BlogPostCreated>() .Subscribe<TweetNewPost>() .Subscribe<NotifyEmailSubscribersOfNewPost>();
5、发送邮件
using Coravel.Mailer.Mail; using App.Models; namespace App.Mailables { public class NewUserViewMailable : Mailable<UserModel> { private UserModel _user; public NewUserViewMailable(UserModel user) => this._user = user; public override void Build() { this.To(this._user) .From("from@test.com") .View("~/Views/Mail/NewUser.cshtml", this._user); } } }
04 项目地址
https://github.com/jamesmh/coravel
更多开源项目: https://github.com/bianchenglequ/NetCodeTop
- End -
推荐阅读