在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
對於 .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 與依賴注入通信 (數字輸入) 如果您的應用程式使用依賴注入框架,容器來管理作業依賴性、配置和生命週期。
在 .NET 程式中創建、修改和呈現 PDF 文件是透過知名的 .NET 套件 IronPDF 實現的。與 PDF 互動的功能豐富:從 HTML 內容、照片或未處理的數據創建 PDF;在現有的 PDF 文件中附加文字、圖片和形狀;將 HTML 頁面轉換為 PDF;以及從 PDF 提取文字和圖片。
IronPDF 的簡便性和使用友好性是其主要優點之一。開發人員可以輕鬆地在其 .NET 項目中開始生成 PDF,因為它有易於使用的 API 和詳細的文檔。IronPDF 的速度和效率 亦是使開發人員能夠迅速有效地生成高質量 PDF 文件的其他特點。
要在控制台或 ASP.NET Core 應用程式中開始使用 IronPDF 與 Quartz.NET,您可以利用 IronPDF 來建立排程的背景工作,執行與 PDF 生成相關的任務。
首先,請確保在您的 .NET 專案中使用 Visual Studio 套件管理器控制台安裝所需的 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 的結合提供了一種強大的方法來自動化與建立 PDF 相關的操作,特別是在 .NET 應用程式中。藉助 Quartz.NET 強大且靈活的排程系統,開發人員可以建立在預定時間或持續時間內執行的任務和觸發器。另一方面,IronPDF 為開發人員提供了所有所需的工具來創建和處理 PDF 文檔。透過使用 HTML、圖形或原始數據,開發人員可以創建出專業外觀的 PDF。
將 IronPDF 的 PDF 生成功能與 Quartz.NET 的排程功能相結合,開發人員可以在分布式應用程式中自動化常見的 PDF 生成操作,例如在預定時間或對觸發器作出反應時生成報告、發票或文件。這種結合使開發人員更容易通過簡化文檔生成工作流程,增強生產力,減少手工勞動,來生成並發送高品質的 PDF 文檔給客戶或客戶。
IronPDF 價格合理,當作為包裹的一部分購買時,還附帶終身許可。由於這個包裹僅需 $749,這對於多個系統的單筆收費來說物超所值。它還向許可持有者提供全天候線上工程支持。若要了解更多有關 Iron Software 產品的信息,請前往此頁面。