.NET 帮助

Quartz .NET(它对开发人员的工作原理)

发布 2024年七月1日
分享:

Quartz.NET 简介

对于 .NET 应用程序,Quartz.NET 是一个广受欢迎的开源任务调度工具包。 它为程序员在预定时期、间隔或响应触发器时规划和执行工作、计划或流程奠定了坚实的基础。 Quartz.NET使.NET应用程序中复杂调度场景的构建变得更加容易,无论是发送通知、调度作业、生成报告还是完成定期维护活动。 Quartz.NET是创建小型应用程序和大型企业系统的完美作业调度系统。

Quartz.NET 的最新调度程序版本可与各种受支持的数据库提供商无缝集成,使开发人员能够使用便捷的扩展方法扩展其功能,同时确保作为托管服务可靠地执行任务。

通过将 Quartz.NET 与 IronPDF for .NET 集成,可以在 .NET 应用程序中构建具有强大 PDF 制作功能的可靠排程系统。 虽然 IronPDF 为 PDF 文档的创建、修改和显示提供了一整套工具,但 Quartz.NET 则提供了一个多功能、可靠的调度系统。 结合使用这些工具,开发人员就能将 PDF 创建操作自动化,将其作为工作流程的一部分或安排后台作业,从而提高应用程序的实用性和功能性。

主要功能

灵活的时间安排

Quartz.NET 使程序员能够创建时间表,告诉程序在预定的时间间隔或时间运行(例如,每小时、每天、每 30 分钟). 它与复杂的调度模式(如 cron 表达式)兼容,可对代码、作业和服务的执行时间进行精确控制。

基于触发器的执行

在 Quartz.NET 中,作业可以通过各种触发器启动。 其中包括基于日历的触发器(例如,不包括周末)简单触发器(按照既定时间表运行)工作触发器,以及取决于外部环境或事件的定制触发器。

工作持续性

Quartz.NET 具有以持久方式安排工作的功能,可将计划任务及其完成历史记录存储在数据库中。 保证作业计划对应用程序故障或重启的恢复能力,并实现作业集群的高可用性和可扩展性。

并发控制

为了保证任务安全有效地完成,Quartz.NET 内置了并发控制工具。 为了控制作业执行的并发性,开发人员可以设置线程池、作业优先级和执行约束。

作业链和依赖性管理

由于 Quartz.NET 支持作业链和依赖性管理,开发人员可以按指定顺序执行作业,并定义作业之间的关系。 这使得为后台作业、服务和程序创建复杂的协调情况成为可能。

错误处理和重试技术

为了优雅地管理故障,Quartz.NET 拥有错误处理和重试技术。 在出现临时故障或异常的情况下,开发人员可以设置重试策略和错误处理技术,以保证作业重试或重新安排。

集群和可扩展性

由于 Quartz.NET 支持分布式作业调度中的集群,调度程序的多个实例可以在服务器集群中协调并执行任务。 通过实现水平可扩展性和容错性,确保在分布式环境中可靠地调度和执行作业。

与 .NET 生态系统整合

Quartz.NET 可轻松与 .NET 生态系统对接,其中包括消息传递系统(Rebus.NET, MassTransit)日志框架(Serilog, NLog)和流行的依赖注入框架(Autofac、Microsoft.Extensions.DependencyInjection).

创建和配置 Quartz.NET

定义工作和触发器

针对您希望运行的任务,建立作业和触发器。 要完成的任务由上下文对象和作业类表示,作业的执行频率和时间由触发器决定。

public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Implement the logic for your job here
    }
}

var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
    .Build();
public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Implement the logic for your job here
    }
}

var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
    .Build();
Public Class MyJob
	Implements IJob

	Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
		' Implement the logic for your job here
	End Function
End Class

Private job = JobBuilder.Create(Of MyJob)().WithIdentity("myJob", "group1").Build()

Private trigger = TriggerBuilder.Create().WithIdentity("myTrigger", "group1").WithCronSchedule("0 0/5 * * * ?").Build()
VB   C#

配置和初始化调度程序

使用指定配置设置作业调度程序以调度后台任务、作业和触发器后,启动调度程序开始计划和执行作业。

var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()
Await scheduler.ScheduleJob(job, trigger)
VB   C#

工作持续性

设置 Quartz.NET,将作业和触发器元数据存储在持久存储区(如数据库)中。 这样才能保证可靠性,使工作在应用程序重启后仍能继续。

错误处理

将错误处理和重试逻辑纳入作业执行逻辑,以优雅的方式处理故障。 Quartz.NET 提供了管理异常和重试任务的内置方法。

聚类

在分布式环境中使用 Quartz.NET 时,为保证高可用性和可扩展性,请设置集群。 由于采用了集群技术,调度程序实例可以在服务器集群之间协作执行任务。

依赖注入

设置 Quartz.NET 与您的依赖注入进行通信(DI)容器来管理作业的依赖关系、配置和生命周期(如果您的应用程序使用依赖注入框架)。

IronPDF

Quartz .NET(如何为开发人员工作):图 1 - IronPDF 网页

著名的 .NET 软件包 IronPDF for .NET 使在 .NET 程序中创建、修改和渲染 PDF 文档成为可能。 与 PDF 交互有大量的功能:从 HTML 内容、照片或未经处理的数据创建 PDF; 在已有的 PDF 文档中添加文本、图像和形状; 将 HTML 页面转换为 PDF; 以及从 PDF 中提取文本和图像。

IronPdf 的简洁性和用户友好性是其两大优势。 .NET具有用户友好的API和丰富的文档,开发人员可以轻松地在他们的.NET项目中生成PDF。 IronPdf 的速度和效率是使开发人员能够快速有效地制作高质量 PDF 文档的进一步特点。

IronPDF 核心功能

  • 根据原始数据、HTML 和图像创建 PDF。
  • 从 PDF 文件中提取文本和图像。
  • 允许您在 PDF 文件中加入页眉、页脚和水印。
  • 创建具有密码和加密安全性的 PDF 文档。
  • 提供填写表格和数字签名的工具。

将 Quartz 与 IronPDF 结合使用

要开始在控制台或 ASP.NET Core 应用程序中使用 IronPDF 与 Quartz.NET,可以使用 IronPDF 建立一个预定的后台作业,运行与 PDF 制作相关的任务。

安装 Quartz 和 IronPDF 软件包

首先,确保您已通过 Visual Studio 软件包管理器控制台使用以下命令在 .NET 项目中安装了 IronPDF 和 Quartz.NET 所需的 NuGet 软件包:

Install-Package Quartz
Install-Package IronPdf
Install-Package Quartz
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package Quartz Install-Package IronPdf
VB   C#

代码示例

本节演示如何制作一个使用 IronPDF 创建 PDF 文档的 Quartz 作业。

public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generate PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new IronPdf.HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
        // Save PDF to file or perform other actions
        pdfDocument.SaveAs("output.pdf");
    }
}
public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generate PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new IronPdf.HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
        // Save PDF to file or perform other actions
        pdfDocument.SaveAs("output.pdf");
    }
}
Public Class PdfGenerationJob
	Implements IJob

	Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
		' Generate PDF using IronPDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1>"
		Dim pdfRenderer = New IronPdf.HtmlToPdf()
		Dim pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent)
		' Save PDF to file or perform other actions
		pdfDocument.SaveAs("output.pdf")
	End Function
End Class
VB   C#

设置 Quartz.NET,利用触发器按预定计划运行 PDF 创建过程。

var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()

Dim job = JobBuilder.Create(Of PdfGenerationJob)().WithIdentity("pdfGenerationJob", "pdfGenerationGroup").Build()

Dim trigger = TriggerBuilder.Create().WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup").WithSimpleSchedule(Function(x) x.WithIntervalInMinutes(30).RepeatForever()).Build()

Await scheduler.ScheduleJob(job, trigger)
VB   C#

启动 Quartz 计划程序,开始执行计划任务:

// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
' Start the scheduler
Await scheduler.Start()
' Optionally, monitor scheduler for job execution
VB   C#

以下是从上述代码生成的输出。

Quartz .NET(如何为开发人员工作):图 2 - IronPDF 和 Quartz.NET 示例代码的输出结果

结论

总之,Quartz.NET 和 IronPDF 的结合为在 .NET 应用程序中自动创建 PDF 相关操作提供了强有力的方法。 借助 Quartz.NET 功能强大、适应性强的调度系统,开发人员可以创建工作和触发器,在预定的时间间隔或持续时间内执行活动。 IronPdf 则为开发人员提供了创建和处理 PDF 文档所需的所有工具。 利用 HTML、图形或原始数据,开发人员可以创建出专业外观的 PDF。

通过将 IronPDF 的 PDF 生成功能与 Quartz.NET 的调度功能集成,开发人员可以在分布式应用程序中自动执行典型的 PDF 生成操作,例如在预定的时间间隔或根据触发器的反应创建报告、发票或文档。 这种集成通过简化文档生成工作流程、提高生产率和减少手工劳动,使开发人员能够更轻松地制作并向客户或顾客发送高质量的 PDF 文档。

IronPdf 价格合理,作为软件包的一部分购买时可获得终身许可。 由于该套餐仅需 749 美元,而且多个系统只需支付一次费用,因此非常超值。 它为许可证持有者提供全天候在线工程协助。 要了解有关 Iron Software 生产的产品的更多信息,请访问网站上的 Iron Software 产品页面。Iron 软件网站.

< 前一页
tye .NET(开发人员的工作原理)
下一步 >
Supersocket C# 示例(它如何为开发者工作)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >