【库】Coravel Schedule任务调度

本文介绍了Coravel如何通过提供简单易用的API和中间件,让开发人员能够快速在.NET应用中集成任务调度、队列管理、缓存和邮件等功能。文章详细展示了如何使用和自定义调度规则,以及如何通过IInvocable接口提高解耦性。
摘要由CSDN通过智能技术生成

Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。

253149b2a0e90919469a7917aca42c98.png

下面是简单的用法,通过注入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;
    }
}

 Coravel调度简单,直接,一些轻量级的调度可以采用。关于更多的调度信息,可参考https://docs.coravel.net/Scheduler/。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值