Quartz.Plugins 3.18.0

Quartz.Plugins provides some useful ready-mady plugins for your convenience.

Installation

You need to add NuGet package reference to your project which uses Quartz.

Install-Package Quartz.Plugins

Configuration

Plugins are configured by using either DI configuration extensions or adding required configuration keys.

Configuration key in in format quartz.plgin.{name-to-refer-with}.{property}.

See configuration reference on how to configure each plugin

Features

LoggingJobHistoryPlugin

Logs a history of all job executions (and execution vetoes) and writes the entries to configured logging infrastructure.

StructuredLoggingJobHistoryPlugin

Structured logging alternative to LoggingJobHistoryPlugin. Uses named message template parameters (e.g. {JobName}, {TriggerGroup}) instead of index-based placeholders, making log output compatible with structured logging sinks like Serilog and NLog. This avoids template cache memory leaks that can occur with the original plugin.

Message templates can be customized via properties. When customizing, the parameter names in templates are positionally mapped, so they must appear in the same order as the defaults.

Available template properties:

Property Parameters (in order)
JobToBeFiredMessage {JobGroup}, {JobName}, {TriggerGroup}, {TriggerName}, {FireTime}, {ScheduledFireTime}, {NextFireTime}, {RefireCount}
JobSuccessMessage {JobGroup}, {JobName}, {FireTime}, {TriggerGroup}, {TriggerName}, {Result}
JobFailedMessage {JobGroup}, {JobName}, {FireTime}, {TriggerGroup}, {TriggerName}, {ExceptionMessage}
JobWasVetoedMessage {JobGroup}, {JobName}, {TriggerGroup}, {TriggerName}, {FireTime}

DI configuration:

services.AddQuartz(q =>
{
    q.UseStructuredJobLogging();
});

Recommended over LoggingJobHistoryPlugin when using structured logging providers (Serilog, NLog, etc.).

StructuredLoggingTriggerHistoryPlugin

Structured logging alternative to LoggingTriggerHistoryPlugin. Logs trigger firings, misfires, and completions using named message template parameters for structured logging compatibility.

Message templates can be customized via properties. When customizing, the parameter names in templates are positionally mapped, so they must appear in the same order as the defaults.

Available template properties:

Property Parameters (in order)
TriggerFiredMessage {TriggerGroup}, {TriggerName}, {JobGroup}, {JobName}, {FireTime}, {ScheduledFireTime}, {NextFireTime}, {RefireCount}
TriggerMisfiredMessage {TriggerGroup}, {TriggerName}, {JobGroup}, {JobName}, {FireTime}, {ScheduledFireTime}, {NextFireTime}
TriggerCompleteMessage {TriggerGroup}, {TriggerName}, {JobGroup}, {JobName}, {CompletedTime}, {ScheduledFireTime}, {NextFireTime}, {TriggerInstructionCode}

DI configuration:

services.AddQuartz(q =>
{
    q.UseStructuredTriggerLogging();
});

Recommended over LoggingTriggerHistoryPlugin when using structured logging providers (Serilog, NLog, etc.).

ShutdownHookPlugin

This plugin catches the event of the VM terminating (such as upon a CRTL-C) and tells the scheduler to Shutdown.

XMLSchedulingDataProcessorPlugin

This plugin loads XML file(s) to add jobs and schedule them with triggers as the scheduler is initialized, and can optionally periodically scan thefile for changes.

The periodically scanning of files for changes is not currently supported in a clustered environment.

JsonSchedulingDataProcessorPlugin

This plugin loads JSON file(s) to add jobs and schedule them with triggers as the scheduler is initialized, and can optionally periodically scan the file for changes. It is the JSON analog of XMLSchedulingDataProcessorPlugin.

The periodically scanning of files for changes is not currently supported in a clustered environment.

DI configuration:

services.AddQuartz(q =>
{
    q.UseJsonSchedulingConfiguration(x =>
    {
        x.Files = new[] { "quartz_jobs.json" };
        x.ScanInterval = TimeSpan.FromMinutes(1);
        x.FailOnFileNotFound = true;
        x.FailOnSchedulingError = true;
    });
});

Property configuration:

quartz.plugin.json.type = Quartz.Plugin.Json.JsonSchedulingDataProcessorPlugin, Quartz.Plugins
quartz.plugin.json.fileNames = quartz_jobs.json
quartz.plugin.json.scanInterval = 60
quartz.plugin.json.failOnFileNotFound = true
quartz.plugin.json.failOnSchedulingError = true

See JSON Configuration for the full JSON file format and trigger type reference.

JobInterruptMonitorPlugin

This plugin catches the event of job running for a long time (more than the configured max time) and tells the scheduler to "try" interrupting it if enabled.

Quartz 3.3 or later required.

Each job configuration needs to have JobInterruptMonitorPlugin.JobDataMapKeyAutoInterruptable key's value set to true in order for plugin to monitor the execution timeout. Jobs can also define custom timeout value instead of global default by using key JobInterruptMonitorPlugin.JobDataMapKeyMaxRunTime.

var job = JobBuilder.Create<SlowJob>()
    .WithIdentity("slowJob")
    .UsingJobData(JobInterruptMonitorPlugin.JobDataMapKeyAutoInterruptable, true)
    // allow only five seconds for this job, overriding default configuration
    .UsingJobData(JobInterruptMonitorPlugin.JobDataMapKeyMaxRunTime, TimeSpan.FromSeconds(5).TotalMilliseconds.ToString(CultureInfo.InvariantCulture))
    .Build();

Showing the top 20 packages that depend on Quartz.Plugins.

Packages Downloads
Quartz.Plugins.TimeZoneConverter
Quartz.NET TimeZoneConverter integration https://github.com/mj1856/TimeZoneConverter; Quartz Scheduling Framework for .NET
10
Quartz.Plugins.TimeZoneConverter
Quartz.NET TimeZoneConverter integration https://github.com/mj1856/TimeZoneConverter; Quartz Scheduling Framework for .NET
9
Quartz.Plugins.TimeZoneConverter
Quartz.NET TimeZoneConverter integration https://github.com/mj1856/TimeZoneConverter; Quartz Scheduling Framework for .NET
8
Quartz.Plugins.TimeZoneConverter
Quartz.NET TimeZoneConverter integration https://github.com/mj1856/TimeZoneConverter; Quartz Scheduling Framework for .NET
7
Quartz.Plugins.TimeZoneConverter
Quartz.NET TimeZoneConverter integration https://github.com/mj1856/TimeZoneConverter
7
Quartz.Plugins.TimeZoneConverter
Quartz.NET TimeZoneConverter integration https://github.com/mj1856/TimeZoneConverter; Quartz Scheduling Framework for .NET
6

https://github.com/quartznet/quartznet/releases

.NET Framework 4.6.2

.NET Framework 4.7.2

.NET Standard 2.0

Version Downloads Last updated
3.18.0 1 2026/4/11
3.17.1 1 2026/4/11
3.17.0 1 2026/4/11
3.16.1 2 2026/3/19
3.16.0 2 2026/3/20
3.15.1 6 2025/11/3
3.15.0 6 2025/10/7
3.14.0 6 2025/6/10
3.13.1 5 2025/6/8
3.13.0 7 2025/6/8
3.12.0 9 2025/6/9
3.11.0 9 2025/5/27
3.10.0 7 2025/6/9
3.9.0 16 2025/6/10
3.8.1 8 2025/6/8
3.8.0 6 2025/6/11
3.7.0 7 2025/6/8
3.6.3 7 2025/6/9
3.6.2 15 2025/5/26
3.6.1 8 2025/6/8
3.6.0 6 2025/6/8
3.5.0 11 2025/6/9
3.4.0 10 2025/6/9
3.3.3 5 2025/6/9
3.3.2 7 2025/6/11
3.3.1 6 2025/6/11
3.3.0 13 2025/5/27
3.2.4 5 2025/6/11
3.2.3 6 2025/6/9
3.2.2 6 2025/6/10
3.2.1 10 2025/5/27
3.2.0 10 2025/6/9
3.1.0 10 2025/6/8
3.0.7 7 2025/6/11
3.0.6 7 2025/6/11
3.0.5 6 2025/6/8
3.0.4 6 2025/6/11
3.0.3 9 2025/6/9
3.0.2 13 2025/6/9
3.0.1 10 2025/5/27
3.0.0 6 2025/6/11
3.0.0-beta1 13 2025/5/27