Coravel 是一个专为 .NET 应用设计的轻量级后台任务框架,无需复杂配置即可实现任务调度、队列处理、缓存管理、事件广播等功能。
通过NuGet 安装或者Coravel CLI安装或者编辑.csproj文件
dotnet add package Coravel
Coravel 的核心设计是与 .NET Core 的依赖注入(DI)系统无缝集成,配置非常简单。
public class MyScheduledTask : IScheduledTask
{
public async Task ExecuteAsync(CancellationToken cancellationToken = default)
{
Console.WriteLine($"执行任务时间:{DateTime.Now}");
await Task.CompletedTask;
}
}
注册服务和调度器:
// 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秒执行
});
队列处理器
public class MyQueuedJob
{
public async Task DoWork()
{
Console.WriteLine($"后台任务开始 {DateTime.Now}");
await Task.Delay(1000);
Console.WriteLine($"后台任务结束 {DateTime.Now}");
}
}
注册并使用
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();
});
定义事件
public class UserRegistered
{
public string UserName { get; set; }
}
定义监听器
public class SendWelcomeEmail : IListener<UserRegistered>
{
public Task HandleAsync(UserRegistered @event)
{
Console.WriteLine($"发送欢迎邮件给用户:{@event.UserName}");
return Task.CompletedTask;
}
}
注册和触发
builder.Services.AddDispatcher();
builder.Services.AddTransient<SendWelcomeEmail>();
var app = builder.Build();
var dispatcher = app.Services.GetRequiredService<IDispatcher>();
await dispatcher.Broadcast(new UserRegistered { UserName = "zhangsan" });
Coravel 提供简易的内存缓存
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}");