Table of Contents

Enum SchedulerOrigin

Namespace
Quartz
Assembly
Quartz.dll

Where a scheduler QuerySchedulers(CancellationToken) reports came from.

public enum SchedulerOrigin

Fields

Agent = 4

Reached through an agent that dialed out to this process from the one running the scheduler. Nothing in this process runs it, and Target is the name the agent registered under.

Declared in 4.5 beside Cluster so that the wire shape of the listing is settled once; the agent that reports it ships separately. Like Remote, every member is a request to another process; unlike it, the connection was opened from the other side, so LastSeenUtc says when that process last spoke.

Cluster = 5

Several targets fronting the nodes of one cluster, reported as one scheduler. The target is the member targets joined with + — a+b+c — and Members lists them.

Detected rather than configured: two or more targets whose schedulers share a name, a clustered persistent store, and at least one node between them are one cluster. Scheduling data goes to one member, whose store every node shares; what belongs to one node — start, stand-by, shutdown — is not offered on the cluster and is reached through the member's own key instead.

Container = 0

Registered with the container by AddQuartz() or AddQuartz(name, …). The container holds its object graph, and the hosted service creates and starts it.

Remote = 2

Reached through a proxy — an HttpScheduler registered with AddQuartzHttpClient. Nothing in this process runs it and IsProxy is true.

What separates this from Runtime is where the scheduler is, not who registered it: every member of it is a network request, so a reader — a dashboard page, an operator's listing — can tell that pausing a trigger here lands in somebody else's process, that its history is kept there, and that this process has no live event stream from it.

Runtime = 1

Bound into the container's ISchedulerRepository rather than registered as a scheduler of this container: a scheduler built by QuartzSchedulerBuilder and made visible by hand. Nothing in the container owns its lifetime.

Window = 3

A window onto a scheduler that lives in somebody else's process and is reached through the database the two share: a never-started scheduler over that store, discovered by its SCHED_NAME rather than registered by name.

Nothing in this process runs it and nothing ever will — its thread pool creates no threads and it is never started — so its own SchedulerStatus says only that it was built. What a reader is told instead is derived from the cluster's check-ins, which is the only liveness a shared store carries.

The store is the contract, so everything the schedule is — jobs, triggers, calendars, pausing, rescheduling, triggering now — works, and whichever node picks the work up honours it. Everything that is a property of one process — starting, standing down, shutting down, interrupting a running job, an execution limit held in memory — cannot be done from here at all. Target says which attached store the window is onto.