温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET Core轻量级作业调度Job任务框架的示例分析

发布时间:2021-09-18 10:00:07 来源:亿速云 阅读:259 作者:柒染 栏目:编程语言

这篇文章给大家介绍ASP.NET Core轻量级作业调度Job任务框架的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

在ASP.NET Core MVC/WebApi项目需要一个按时执行的任务,每隔几分钟执行一个,或者每隔几小时执行一次等等,这个时候就需要一个定时的功能,最简单的就是用Timer自己写一个,但是自己写的性能等各方面有可能不健全等等,虽然ASP.NET Core现在内置提供了自带的Worker Service功能,但是对于复杂时间的作业计划并不支持;

大家可能会想到使用强大的Quartz.Net框架,为什么不选择它,主要是因为太复杂的了,不容易简单快速上手 ,而现在开源的库也越来越多,功能也越来越好,那么阿笨今天给大家推荐一款轻量级的作业调度Job任务框架,简单且功能强大,很方便的与ASP.NET Core进行结合,那么它的名字是什么。。。。

文章末尾阿笨已经给大家把示例代码进行封装好了,开箱即用。你再也不用为项目中如何执行多个作业任务而感到烦恼了?

二、FluentScheduler介绍

我们是一批站在巨人肩上的人,好的东西也学会用,直接拿来主义。FluentScheduler定时任务库,通过nuget引用,可以设置各种事件间隔,,超级方便简单。

FluentScheduler是一个简单的任务调度框架,使用起来非常方便。作者的源码和例子的地址:

https://github.com/fluentscheduler/FluentScheduler

1.首先引用FluentScheduler.dll,dll数据源可通过NuGet程序包获取。打开管理解决方案的NuGet程序包,输入FluentScheduler即可。

步骤:状态栏选择 工具 - NuGet程序包管理器 – 管理解决方案的NuGet程序包,然后输入FluentScheduler即可。

ASP.NET Core轻量级作业调度Job任务框架的示例分析


三、FluentScheduler使用方式

第一步:

注册FluentSchedule服务

ASP.NET Core轻量级作业调度Job任务框架的示例分析

ASP.NET Core轻量级作业调度Job任务框架的示例分析

第二步:

定义我们要执行Job的任务,比如这里阿笨以“订单”和“邮件”两个Job任务进行举例

ASP.NET Core轻量级作业调度Job任务框架的示例分析

第三步:

继承Registry类,可以理解为:该任务执行的计划的作业调度时间策略。比如:每5秒一次循环,每1小时一次循环。

ASP.NET Core轻量级作业调度Job任务框架的示例分析

第四步:

继承实现IJob接口,可以理解为:具体执行的任务业务逻辑是什么。

ASP.NET Core轻量级作业调度Job任务框架的示例分析

第五步:直接F5允许即可。

需要有一点要注意的就是NonReentrantAsDefault方法的作用特别重大:它代表每一次任务都必须执行完成后,才能开启下一次执行,防止并发执行带来的问题,即也就是防止重复执行。下次任务开始一定要等上一次任务执行完成后才进行。

这里给大家列举了一下的我们常用的几种作业调度计划

// Schedule an IJob to run at an interval

// 立即执行每10秒一次的计划任务。(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)

Schedule().ToRunNow().AndEvery(10).Seconds();

// 立即执行每10秒一次的计划任务。如果本次任务没有结束,下一次的任务则不会开始,禁止并行运行

Schedule().www.leyouzaixan.cnNonReentrant().ToRunNow().AndEvery(10).Seconds();

//在每天的21:15执行计划任务

Schedule(() => Console.WriteLine("www.taohuayuan178.com It's 9:15 PM now.")).ToRunEvery(1).Days().At(21,15);

// 立即执行一个在每月的第一个星期一 3:00 的计划任务

Schedule(() => Console.WriteLine("It's 3:00 AM now.")).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3,0);

//在每周一的21:15执行计划任务

Schedule(() => Console.WriteLine("It's 9:15 PM now.")).ToRunEvery(1).Weeks().On(DayOfWeek.Monday).At(21,15);

关于ASP.NET Core轻量级作业调度Job任务框架的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI