首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Coravel : .NET 轻量级任务调度与后台任务处理

Coravel : .NET 轻量级任务调度与后台任务处理

作者头像
郑子铭
发布2025-08-06 18:00:26
发布2025-08-06 18:00:26
11600
代码可运行
举报
运行总次数:0
代码可运行

Coravel 是一个专为 .NET 应用设计的轻量级后台任务框架,无需复杂配置即可实现任务调度、队列处理、缓存管理、事件广播等功能。

入门指南

通过NuGet 安装或者Coravel CLI安装或者编辑.csproj文件

代码语言:javascript
代码运行次数:0
运行
复制
dotnet add package Coravel

基础功能概览

Coravel 的核心设计是与 .NET Core 的依赖注入(DI)系统无缝集成,配置非常简单。

1. 定时任务调度(Scheduler)

代码语言:javascript
代码运行次数:0
运行
复制
public class MyScheduledTask : IScheduledTask
{
    public async Task ExecuteAsync(CancellationToken cancellationToken = default)
    {
        Console.WriteLine($"执行任务时间:{DateTime.Now}");
        await Task.CompletedTask;
    }
}

注册服务和调度器:

代码语言:javascript
代码运行次数:0
运行
复制
// Program.cs (.NET 6/7/8)
builder.Services.AddScheduler();
builder.Services.AddTransient<MyScheduledTask>();

var app = builder.Build();

app.Services.UseScheduler(scheduler =>
{
    scheduler
        .Schedule<MyScheduledTask>()
        .EveryTenSeconds(); // 每10秒执行
});

2. 队列任务(Queue)

队列处理器

代码语言:javascript
代码运行次数:0
运行
复制
public class MyQueuedJob
{
    public async Task DoWork()
    {
        Console.WriteLine($"后台任务开始 {DateTime.Now}");
        await Task.Delay(1000);
        Console.WriteLine($"后台任务结束 {DateTime.Now}");
    }
}

注册并使用

代码语言:javascript
代码运行次数:0
运行
复制
builder.Services.AddQueue();
builder.Services.AddTransient<MyQueuedJob>();

var app = builder.Build();

var queue = app.Services.GetRequiredService<IQueue>();
queue.QueueAsyncTask(async serviceProvider =>
{
    var job = serviceProvider.GetRequiredService<MyQueuedJob>();
    await job.DoWork();
});

3. 事件广播(Event Broadcasting)

定义事件

代码语言:javascript
代码运行次数:0
运行
复制
public class UserRegistered
{
    public string UserName { get; set; }
}

定义监听器

代码语言:javascript
代码运行次数:0
运行
复制
public class SendWelcomeEmail : IListener<UserRegistered>
{
    public Task HandleAsync(UserRegistered @event)
    {
        Console.WriteLine($"发送欢迎邮件给用户:{@event.UserName}");
        return Task.CompletedTask;
    }
}

注册和触发

代码语言:javascript
代码运行次数:0
运行
复制
builder.Services.AddDispatcher();
builder.Services.AddTransient<SendWelcomeEmail>();

var app = builder.Build();

var dispatcher = app.Services.GetRequiredService<IDispatcher>();
await dispatcher.Broadcast(new UserRegistered { UserName = "zhangsan" });

4. 缓存(Cache)

Coravel 提供简易的内存缓存

代码语言:javascript
代码运行次数:0
运行
复制
builder.Services.AddCache();

var cache = app.Services.GetRequiredService<ICache>();

await cache.PutAsync("token", "abcdef", TimeSpan.FromMinutes(10));

string token = await cache.GetAsync<string>("token");
Console.WriteLine($"缓存的token是:{token}");

官方资源

  • • 官网文档:https://docs.coravel.net
  • • GitHub:https://github.com/jamesmh/corave
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 入门指南
  • 基础功能概览
    • 1. 定时任务调度(Scheduler)
    • 2. 队列任务(Queue)
    • 3. 事件广播(Event Broadcasting)
    • 4. 缓存(Cache)
  • 官方资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档