Table of Contents

Class DashboardAgentHubOptions

Namespace
Quartz
Assembly
Quartz.Dashboard.dll

How the dashboard accepts agents: schedulers in other processes that dial out to it rather than being dialled.

public sealed class DashboardAgentHubOptions
Inheritance
DashboardAgentHubOptions
Inherited Members

Remarks

Configured through AcceptAgents(Action<DashboardAgentHubOptions>?), which is also what maps the agent hub at {DashboardPath}/agents. An agent authenticates with a bearer token from Tokens, with the host's own authentication through AuthorizationPolicy, or with both; a hub with neither refuses to start, as the dashboard's own pages do.

The dashboard judges an agent's liveness by its heartbeats: one that misses OfflineAfterMissedHeartbeats of them in a row is listed as Unknown with the time it was last heard from, and one that stays away for ForgetAfter is forgotten. Everything else about an agent's scheduler is the agent's own decision: the dashboard's ReadOnly hides its buttons, and the agent's DashboardAgentOptions decide what it will do.

Properties

AuthorizationPolicy

The authorization policy the hub is held to, for an agent that authenticates with the host's own scheme — a client certificate, a managed identity, an OIDC client credential. Null — the default — applies none. With Tokens set as well, both apply.

public string? AuthorizationPolicy { get; set; }

Property Value

string

ForgetAfter

How long a disconnected agent stays listed — as Unknown, or as Shutdown after it said goodbye — before the dashboard forgets it. One hour by default.

public TimeSpan ForgetAfter { get; set; }

Property Value

TimeSpan

HeartbeatInterval

How often the hub expects a heartbeat from each agent, which the agent adopts when it registers. Fifteen seconds by default.

public TimeSpan HeartbeatInterval { get; set; }

Property Value

TimeSpan

IsJobTypeAllowed

Which job types the dashboard will send to an agent at all, on top of what the agent itself accepts. Null — the default — sends every request on and leaves the decision to the agent's DashboardAgentOptions.IsJobTypeAllowed, which refuses every type until it is set.

public Func<string, bool>? IsJobTypeAllowed { get; set; }

Property Value

Func<string, bool>

Remarks

A narrowing on this side binds nothing on the worker — the agent's own predicate does — and exists so that an operator can stop a job type at the dashboard without touching every worker.

MaxMessageBytes

The most bytes one answer may carry, stated to the agent when it registers; the agent refuses a larger page itself with 413, so a listing too big for the channel says to lower take rather than tearing the connection down. Four megabytes by default.

public int MaxMessageBytes { get; set; }

Property Value

int

OfflineAfterMissedHeartbeats

How many heartbeats an agent may miss in a row before its scheduler is listed as Unknown. Three by default: 45 seconds of silence.

public int OfflineAfterMissedHeartbeats { get; set; }

Property Value

int

OperationTimeout

How long the dashboard waits for an agent to answer one request before it cancels the request on both sides. Thirty seconds by default.

public TimeSpan OperationTimeout { get; set; }

Property Value

TimeSpan

Tokens

The bearer tokens the hub accepts, Quartz's own scheme. Set at least Primary to authenticate agents this way.

public AgentTokens Tokens { get; }

Property Value

AgentTokens