在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
对于 .NET 应用程序来说,Quartz.NET 是一个广受欢迎的开源任务调度工具包。它为程序员在预定时间、间隔或响应触发器时计划和执行工作、日程或进程奠定了坚实的基础。Quartz.NET能让你在.NET应用程序中更轻松地构建复杂的调度方案,无论是发送通知、调度工作、生成报告还是完成定期维护活动。Quartz.NET是创建小型应用程序到大型企业系统的完美作业调度系统。
Quartz.NET的最新调度程序版本与各种受支持的数据库提供商实现了无缝集成,使开发人员能够使用便捷的扩展方法扩展其功能,同时确保作为托管服务可靠地执行任务。
通过将 Quartz.NET 与 IronPDF 集成,可以在 .NET 应用程序中构建具有强大 PDF 制作功能的可靠调度系统。虽然 IronPDF 提供了一整套创建、修改和显示 PDF 文档的工具,但 Quartz.NET 提供了一个多功能、可靠的调度系统。两者结合后,开发人员就能将 PDF 创建操作自动化,将其作为工作流的一部分或安排后台作业,从而提高应用程序的实用性和功能性。
Quartz.NET使程序员能够创建时间表,告诉程序在预定的时间间隔或时间运行 (例如,每小时、每天、每 30 分钟).它兼容复杂的调度模式,如 cron 表达式,可精确控制代码、作业和服务的执行时间。
在 Quartz.NET 中,作业可以通过各种触发器启动。这些触发器包括基于日历的触发器 (例如,不包括周末)简单触发器 (按照既定时间表运行)工作触发器,以及取决于外部环境或事件的定制触发器。
Quartz.NET 具有以持久方式安排作业的功能,可将计划任务及其完成历史记录存储在数据库中。保证了作业计划对应用程序故障或重启的恢复能力,并实现了高可用性和可扩展性的作业集群。
为保证任务安全有效地完成,Quartz.NET 内置了并发控制工具。为了控制任务执行的并发性,开发人员可以设置线程池、任务优先级和执行限制。
由于 Quartz.NET 支持作业链和依赖关系管理,开发人员可以按指定顺序执行作业,并定义作业之间的关系。这使得为后台作业、服务和程序创建复杂的协调情况成为可能。
为了优雅地管理故障,Quartz.NET 提供了错误处理和重试技术。在出现临时故障或异常时,开发人员可以设置重试策略和错误处理技术,以保证作业重试或重新安排。
由于 Quartz.NET 支持分布式作业调度中的集群,调度程序的多个实例可以在服务器集群中协调和执行任务。这通过实现水平扩展性和容错性,确保了可靠的作业调度器和分布式环境下的执行。
Quartz.NET可轻松与.NET生态系统对接,其中包括消息系统 (Rebus.NET, MassTransit)日志框架 (Serilog, NLog)和流行的依赖注入框架 (Autofac、Microsoft.Extensions.DependencyInjection).
为希望运行的任务建立作业和触发器。要完成的任务由上下文对象和作业类表示,作业的执行频率和时间由触发器决定。
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()
使用指定配置设置作业调度程序以调度后台任务、作业和触发器后,启动调度程序开始计划和执行作业。
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)
设置 Quartz.NET 可将作业和触发器元数据存储在持久存储区(如数据库)中。这保证了可靠性,并允许作业在应用程序重启后继续运行。
在任务执行逻辑中加入错误处理和重试逻辑,以优雅地处理故障。Quartz.NET 提供了管理异常和重试任务的内置方法。
在分布式环境中使用 Quartz.NET 时,为确保高可用性和可扩展性,可设置集群。有了集群功能,调度程序实例可以在服务器集群中协作执行任务。
设置 Quartz.NET 与您的依赖注入进行通信 (DI) 容器来管理作业的依赖关系、配置和生命周期(如果您的应用程序使用依赖注入框架)。
著名的 .NET 软件包 IronPDF 使在 .NET 程序中创建、修改和渲染 PDF 文档成为可能。IronPDF 提供了大量与 PDF 交互的功能:从 HTML 内容、照片或未经处理的数据创建 PDF;在已有的 PDF 文档中添加文本、图像和形状;将 HTML 页面转换为 PDF;以及从 PDF 中提取文本和图像。
IronPDF 的两个主要优点是简单易用。开发人员可以利用其用户友好的 API 和丰富的文档,在其 .NET 项目中轻松开始生成 PDF。此外,IronPDF 的速度和效率也使开发人员能够快速有效地生成高质量的 PDF 文档。
要开始在控制台或 ASP.NET Core 应用程序中将 IronPDF 与 Quartz.NET 结合使用,可以使用 IronPDF 建立一个计划的后台作业,运行与 PDF 制作相关的任务。
首先,请使用以下命令在 Visual Studio 软件包管理器控制台中将 IronPDF 和 Quartz.NET 所需的 NuGet 软件包安装到 .NET 项目中:
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
本节演示如何使用 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
设置 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)
启动 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
以下是上述代码生成的输出结果。
总之,Quartz.NET 和 IronPDF 的结合为在 .NET 应用程序中自动创建 PDF 相关操作提供了一种强有力的方法。借助 Quartz.NET 功能强大、适应性强的调度系统,开发人员可以创建工作和触发器,在预定的时间间隔或持续时间内执行活动。另一方面,IronPDF 为开发人员提供了创建和处理 PDF 文档所需的所有工具。开发人员可以使用 HTML、图形或原始数据创建专业外观的 PDF 文件。
通过将 IronPDF 的 PDF 生成功能与 Quartz.NET 的调度功能集成,开发人员可以在分布式应用程序中自动执行典型的 PDF 生成操作,如在预定的时间间隔或根据触发器自动创建报告、发票或文档。通过这种集成,开发人员可以简化文档生成工作流、提高生产率并减少手工劳动,从而更轻松地生成高质量的 PDF 文档并发送给客户或顾客。
IronPDF 价格合理,作为软件包的一部分购买时还可获得终身许可。由于该软件包仅售 749 美元,而且多个系统只需支付一次费用,因此它具有非凡的价值。它为许可证持有者提供全天候在线工程协助。要了解有关 Iron Software 产品的更多信息,请访问此页面。