在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
对于 .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 支持分布式作业调度中的集群,调度程序的多个实例可以在服务器集群中协调并执行任务。 通过实现水平可扩展性和容错性,确保在分布式环境中可靠地调度和执行作业。
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 for .NET 使在 .NET 程序中创建、修改和渲染 PDF 文档成为可能。 与 PDF 交互有大量的功能:从 HTML 内容、照片或未经处理的数据创建 PDF; 在已有的 PDF 文档中添加文本、图像和形状; 将 HTML 页面转换为 PDF; 以及从 PDF 中提取文本和图像。
IronPdf 的简洁性和用户友好性是其两大优势。 .NET具有用户友好的API和丰富的文档,开发人员可以轻松地在他们的.NET项目中生成PDF。 IronPdf 的速度和效率是使开发人员能够快速有效地制作高质量 PDF 文档的进一步特点。
要开始在控制台或 ASP.NET Core 应用程序中使用 IronPDF 与 Quartz.NET,可以使用 IronPDF 建立一个预定的后台作业,运行与 PDF 制作相关的任务。
首先,确保您已通过 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
本节演示如何制作一个使用 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 生产的产品的更多信息,请访问网站上的 Iron Software 产品页面。Iron 软件网站.