【库】Coravel Schedule任务调度

news/2025/2/22 21:34:18/文章来源:https://www.cnblogs.com/axzxs2001/p/18731449

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

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

  文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888184.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【库】用Rin透视Web请求

Rin 可以捕获对 ASP.NET Core 应用程序的 HTTP 请求,并为捕获的数据提供查看器。它是调试 Web 应用程序(例如,网站、API 应用)的有用工具。先看如下代码:var builder = WebApplication.CreateBuilder(args); builder.Logging.AddRinLogger(); builder.Services.AddRin(); …

【蓝桥训练记录】第 26 场 蓝桥月赛

训练情况赛后反思 这场怎么都是猜猜乐+典题,做不出来的题真的不会了 A题 显然 2025 里面有多少个 15,除法向上取整即可点击查看代码 #include <bits/stdc++.h> // #define int long long #define endl \nusing namespace std;void solve(){cout<<ceil(1.0*2025/15…

光纤三维布里渊温度和应变分布matlab模拟与仿真

1.程序功能描述 光纤三维布里渊温度和应变分布matlab模拟与仿真。其中 , 布里渊散射是光波与声波在光纤中传播时相互作用而产生的光散射过程 , 在不 同的条件下 , 布里渊散射又分别以自发散射和受激散射两种形式表现出来 。 2.测试软件版本以及运行结果展示MATLAB2022A版…

基于一阶梯度的图像亚像素位移matlab仿真,带GUI界面

1.算法运行效果图预览 (完整程序运行后无水印)2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)% --- Executes on button press in checkbox1. function checkbox1_Callback(hObject, eventdata, handles) % hObject handle to…

Java基础学习(十六)

Java基础学习(十六):多线程 目录Java基础学习(十六):多线程概念多线程的实现方式常见成员方法线程安全问题同步代码块同步方法Lock 锁生产者消费者模式(等待唤醒机制)线程池 本文为个人学习记录,内容学习自 黑马程序员概念进程:程序的基本执行实体 线程:操作系统能够…

AXI4-Stream Data FIFO(2.0)

IP核具体设置如下,数据宽度64bit,深度32,启用了包传输。打开Example Design三个IP核和两个AXI读写模块。 clk_wiz_0是mmcm IP核,提供工作时钟,proc_sys_reset_0是系统复位 IP核,提供复位信号,axis_data_fifo是本次的仿真IP 核。 axis_data_fifo_example_master是写模块,…

DeepSeek宣布下周开源5大项目,这才是真OpenAI!

近日,DeepSeek 团队宣布将在下周连续开源 5 个项目。这一举措不仅吸引了众多开发者的目光,还在技术社区引发了热烈讨论,不少网友甚至将 DeepSeek 誉为 “真正的 OpenAI”。一、DeepSeek开源计划详情(一)开源时间与方式DeepSeek团队决定开展“OpenSourceWeek”(开源周)活…

NOIP 2024 游记 | Loser.

Loser. p.s. 本文章比较废话()Day 1 早上 6:30 被拽起来了。吃饭。出门。坐地铁。到! 华科大门,比,华师气派多了诶诶。扯了个横幅,拍照。拍照。拍照。 诶诶,怎么 7:45 就拽着我们进去了。 进考场。我怎么是第一排第一个 /jk 看见了 @Hakureireimu_cjrljpx,但是他不认识…

利用 vscode 进行远程开发

打开远程项目路径在远程服务器上安装 vscode 插件 Go、GitLens、Git History、Git Graph、MarsCode AI对于本地已经安装的插件,点击Install In SSH:xxx就能把插件安装到远程服务器对于本地没有安装的插件,直接查找插件,选中安装,即是安装到远程服务器git 不高亮显示修改行从…

查看Oracle的数据库表命令

在 Oracle 里 “数据库” 的概念和其他数据库系统有所不同,Oracle 一个实例通常对应一个数据库,但可以包含多个不同的模式(类似于其他数据库系统中的用户数据库)1. 查看数据库名称你可以在 SQL*Plus 或者 SQL Developer 等工具中执行如下 SQL 语句:SELECT name FROM v$dat…

Linux 中declare命令详解

Linux 中declare命令001、普通测试[root@PC1 dir1]# ls [root@PC1 dir1]# echo $var1[root@PC1 dir1]# var1="hello world" [root@PC1 dir1]# echo $var1 hello world [root@PC1 dir1]# var1=100.55 [root@PC1 dir1]# echo $var1 100.55 [root@PC1 dir1]# var1=100 […