使用ASP.NET Core创建Quartz.NET托管服务

简介-什么是Quartz.NET?

根据他们的网站

Quartz.NET是功能齐全的开源作业调度系统,可用于最小的应用程序到大型企业系统。

它是许多ASP.NET开发人员的主要资料,被用作以可靠的群集方式在计时器上运行后台任务的方式。将Quartz.NET与ASP.NET Core一起使用非常相似-Quartz.NET支持.NET Standard 2.0,因此您可以轻松地在应用程序中使用它。

“通用主机”也可以使用这种非HTTP方案,但是由于种种原因,我目前通常不使用那些。希望通过在这些非HTTP方案中进行额外的投资,可以在ASP.NET Core 3.0中改善这一点。

虽然可以创建“定时”后台服务(例如,每10分钟运行一次任务),但Quartz.NET提供了更为强大的解决方案。通过使用Cron触发器,您可以确保任务仅在一天的特定时间(例如,凌晨2:30)运行,或仅在特定的几天运行,或任意组合运行。它还允许您以集群方式运行应用程序的多个实例,以便在任何时候只能运行一个实例。

在本文中,我将介绍创建Quartz.NET作业并将其调度为在托管服务中的计时器上运行的基础知识。

安装Quartz.NET

Quartz.NET是一个.NET Standard 2.0 NuGet软件包,因此应该易于安装在您的应用程序中。对于此测试,我创建了一个ASP.NET Core项目并选择了Empty模板。您可以使用安装Quartz.NET软件包dotnet add package Quartz。如果您查看该项目的.csproj,它应该看起来像这样:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Quartz" Version="3.0.7" />
  </ItemGroup>

</Project>

创建一个IJob

对于我们正在安排的实际后台工作,我们将使用“ hello world”实现,该实现写入并ILogger<>(进而写入控制台)。您应该实现IJob包含单个异步Execute()方法的Quartz接口。请注意,这里我们使用依赖注入将记录器注入到构造函数中。

using Microsoft.Extensions.Logging;
using Quartz;
using System.Threading.Tasks;

[DisallowConcurrentExecution]
public class HelloWorldJob : IJob
{
   
    private readonly ILogger<HelloWorldJob> _logger;
    public HelloWorldJob(ILogger<HelloWorldJob> logger)
    {
   
        _logger = logger;
    }

    public Task Execute(IJobExecutionContext context)
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值