Table of Contents

Class ClusteringOptions

Namespace
Quartz
Assembly
Quartz.dll

Strongly typed configuration for taking part in a cluster.

public sealed class ClusteringOptions
Inheritance
ClusteringOptions
Inherited Members

Remarks

Binds from the Clustering sub-section of the job store's configuration, and is where clustering is said once. The ADO.NET job store does not repeat these settings: whether a scheduler is clustered is Enabled, and IJobStore.Clustered reports it rather than offering a second place to set it.

The equivalent flat keys are quartz.jobStore.clustered, quartz.jobStore.clusterCheckinInterval and quartz.jobStore.clusterCheckinMisfireThreshold.

Properties

CheckinInterval

How often this scheduler records that it is still alive.

public TimeSpan CheckinInterval { get; set; }

Property Value

TimeSpan

Remarks

Shorter intervals detect a failed node sooner at the cost of more database traffic.

CheckinMisfireThreshold

How long past a missed check-in another scheduler waits before treating this one as dead and recovering its triggers.

public TimeSpan CheckinMisfireThreshold { get; set; }

Property Value

TimeSpan

Remarks

It is also the window this scheduler's own check-in loop retries a failed check-in inside: a check-in that fails is attempted again with half of what is left of the interval plus this threshold, never later than DbRetryInterval, so a database blip shorter than the threshold does not get the node written off. Only once the window has closed does the loop back off DbRetryInterval between attempts.

Raise it past the environment's worst pause — a garbage collection, a virtual machine migration, a database failover — rather than its worst clock error: a genuinely dead node's work waits interval plus threshold to be taken over, and a live node that misses that window is recovered while it is still working.

Enabled

Whether this scheduler takes part in a cluster with every other scheduler sharing its database.

public bool Enabled { get; set; }

Property Value

bool

Remarks

UsePersistentStore(store => store.UseClustering()) turns this on, so code-first configuration never sets it directly. It is settable so that a scheduler configured entirely from a file can turn clustering on the same way it turns anything else on.