Quartz快速入门.Net Core 3.1实现
程序员文章站
2022-06-11 09:34:15
...
一、需求场景
我们在日常开发中,总会遇到这样的需求:
- 每隔一段时间,执行一次某个任务。
- 固定某个时间执行任务,例如凌晨12点对当天的数据进行统计。
- 每个月的第几天,执行某个任务。
诸如此类的需求很多,我们总不能人工去干这件事吧 ?所以我们需要引入作业调度工具,也就是今天的主角——Quartz。
二、Quartz基本介绍
2.1Quartz概述
Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。该项目于 2009 年被 Terracotta 收购,目前是 Terracotta 旗下的一个项目。读者可以到 http://www.quartz-scheduler.org/站点下载 Quartz 的发布版本及其源代码。
2.2Quartz的特点
作为一个优秀的开源调度框架,Quartz 具有以下特点:
- 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求;
- 灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式;
- 分布式和集群能力,Terracotta 收购后在原来功能基础上作了进一步提升。
三、使用Quartz
此次我将建立一个.net Core 3.1 MVC项目进行演示
1、NuGet引入Quartz,目前为止Quartz的最新版本为3.0.7。
2、注册ISchedulerFactory的实例。
切换至Startup类,在ConfigureServices方法中添加如下代码
services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
3、创建作业
我们添加一个Jobs的类,继承Ijob接口
Jobs类中的Execute方法,多线程的向我们的D盘中的message.log文本文件中写入当前时间。
3.代码演示。
切换到HomeController ,正式开始撸代码。
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly ISchedulerFactory _schedulerFactory;
private IScheduler _scheduler;
public HomeController(ILogger<HomeController> logger, ISchedulerFactory schedulerFactory)
{
_logger = logger;
_schedulerFactory = schedulerFactory;
}
public async Task<IActionResult> Index()
{
//通过工场类获得调度器
_scheduler = await _schedulerFactory.GetScheduler();
//开启调度器
await _scheduler.Start();
//创建触发器(也叫时间策略)
var trigger = TriggerBuilder.Create()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())//每10秒执行一次
.Build();
//创建作业实例
//Jobs即我们需要执行的作业
var jobDetail = JobBuilder.Create<Jobs>()
.WithIdentity("Myjob", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
//将触发器和作业任务绑定到调度器中
await _scheduler.ScheduleJob(jobDetail, trigger);
return View();
}
public IActionResult Privacy()
{
return View();
}
4、运行结果
可以看到程序每隔10秒就会向message文件写入一行当前时间。
四、更多时间策略
文章开篇我们就列举了几种常见的业务需求,上面的案例中,我们演示了10秒钟执行一次的效果。如果需要以分钟、小时、天等作为单位,甚至是更为复杂的时间策略,如何定制呢?
未完,待续。。。。。。。。。
上一篇: 了解正在运行的SpringBoot
推荐阅读
-
快速入门ASP.NET Core看这篇就够了
-
.Net Core 3.0 IdentityServer4 快速入门
-
在net Core3.1上基于winform实现依赖注入实例
-
Asp.net Core 3.1基于AspectCore实现AOP实现事务、缓存拦截器功能
-
【.NET Core】ASP.NET Core之IdentityServer4(1):快速入门
-
.NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
-
[Asp.Net Core] 为什么选择 Blazor Server Side (一) 快速实现图片验证码
-
.NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了
-
ASP.NET Core快速入门之实战篇
-
.NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了