Skip to content

Quartz.NET reliability

Make every scheduled job answer for its run.

CronRadar walks registered Quartz jobs and triggers, declares their schedules, and listens for start, completion, and failure events without changing IJob execution. The published 0.1.0 monitors jobs on repeating simple triggers; cron-trigger translation ships in 0.1.1.

  • Trigger discovery
  • Listener-based lifecycle
  • Quartz 3.4+

Runnable setup

Attach before the scheduler starts

Call MonitorAll after registering jobs and triggers. The extension declares jobs when the scheduler starts and registers one Quartz job listener for execution telemetry. Review the package release note above.

C#Copy, add your key, run
dotnet add package CronRadar.Quartz

# Set this in your deployment environment
CRONRADAR_API_KEY=ck_app_xxxxxxxxxxxxxxxxxxxx

using CronRadar.Quartz;
using Quartz;

IScheduler scheduler = await schedulerFactory.GetScheduler();
await scheduler.ScheduleJob(myJob, myTrigger);
await scheduler.MonitorAll();
await scheduler.Start();

Verified behavior

Schedule awareness plus execution truth.

The integration is deliberately smaller than an observability agent: it records enough lifecycle context to detect broken scheduled work.

Pre-synchronized

Registered jobs appear from the scheduler inventory before waiting for their first execution.

scheduler → bulk sync

Schedule declaration

Repeating simple triggers are declared as five-field schedules. 0.1.0 sends cron triggers unchanged and CronRadar rejects them; translating them requires the pending 0.1.1.

every 15 min → */15 * * * *

Lifecycle listener

One IJobListener records start, completion, and failure for every included job.

start / complete / fail

Late and stuck runs

A missed expected signal or a start without completion can move an automation into a critical timeout state.

30-second evaluator cadence

Unsupported triggers stay explicit

Schedules that cannot be represented safely are logged and skipped; other jobs continue to be monitored.

no invented schedule

Scheduler behavior preserved

Monitoring errors are caught, while exceptions from your job remain Quartz’s responsibility.

HTTP timeout: 5 seconds

Product evidence

One view across applications and schedulers.

CronRadar workspace showing applications with healthy, warning, and critical automation counts
A real CronRadar workspace capture. Application-level health counts make scheduled-work failures visible without turning CronRadar into a logs or queue-management platform.

Fit and migration

Know the boundary before you depend on it.

Does CronRadar replace Quartz persistence or recovery?

No. Quartz still owns scheduling, persistence, misfires, and retries. CronRadar independently records whether scheduled work started and finished.

What about calendars and unusual trigger types?

In the published 0.1.0, only repeating simple triggers are monitored; a cron trigger is sent unchanged and rejected without a warning. Until 0.1.1, give a cron-triggered job [SkipMonitor] and report it with the base SDK and a five-field UTC schedule.

Will a monitoring outage change IJob behavior?

No. The listener catches its own errors and never short-circuits IJob.Execute. Quartz continues its normal failure and retry handling.

How should we migrate?

Enable MonitorAll in one application, confirm the discovered job list and a normal execution, run a safe test failure, then retire equivalent manual heartbeats job by job.

Running scheduled work outside Quartz? See the general integration path.

Add an independent signal to Quartz.NET.

Protect up to ten active automations on Free, with every supported alert channel included. Development and staging jobs count too.