惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
T
Tailwind CSS Blog
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
博客园 - 叶小钗
N
Netflix TechBlog - Medium
罗磊的独立博客
量子位
MyScale Blog
MyScale Blog
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
B
Blog
腾讯CDC
爱范儿
爱范儿
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
F
Fortinet All Blogs
雷峰网
雷峰网
G
Google Developers Blog
Google DeepMind News
Google DeepMind News

博客园 - chingho

OpenClaw 不会安装的,一键安装包来了,代码开源! Windows下安装 Ollama + OpenClaw + 飞书,实现真正本地部署! 微软新利器!winapp CLI:一键打包、调试、集成 Windows 原生能力 告别代码!我用Trae氛围编程的方式,开发了一款公众号文章同步插件! C#实现Stdio通信方式的MCP Server C#实现SSE通信方式的MCP Server C#实现MCP Client 与 LLM 连接,抓取网页内容功能! VS Code + Cline + 魔搭MCP Server 实现抓取网页内容。 C#实现自己的MCP Client 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略来了! Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能 Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5 OxyPlot:一个功能强大、漂亮.Net跨平台开源绘图库 websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库 Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能 BotSharp:又一个.Net重磅AI开源项目,.Net在AI领域开始崛起! DateTimeExtensions:一个轻量C#的开源DateTime扩展方法库 Bogus:.NET的假数据生成利器 .Net程序员机会来了,微软官方新推出一个面向Windows开发者本地运行AI模型的开源工具
Coravel:一个可轻松实现任务调度、队列、邮件发送的开源项目
chingho · 2025-01-03 · via 博客园 - chingho

推荐一个轻量级的任务调度开源项目。

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 -

推荐阅读

推荐一个C#轻量级矢量图形库

.NET日志库:Serilog、NLog、Log4Net等十大开源日志库大盘点!

推荐5个.Net版本 Redis 客户端开源库

ImageSharp:高性能跨平台.NET开源图形库

盘点3个.Net热门HTTP开源库