Background jobs for .NET

The scheduler never runs your code.

Axon is a background job scheduler for .NET: enqueue work from anywhere, and it runs on whichever service you point it at — reliably, in the right order, with a live dashboard to watch it happen. Retries, priority, recurring schedules, and multi-instance scale-out come built in.

$ dotnet add package GoAxon.Server && dotnet add package GoAxon.Client

What you get

Everything a background job needs, out of the box.

Enqueue a method call from any service. Axon takes care of getting it to the right place, at the right time, exactly once — and gives you a dashboard to watch it happen.

Run jobs anywhere

Enqueue from one service, execute on another — a worker fleet, a desktop app, a device on the factory floor. Deploy job code independently of the scheduler.

Instant dispatch

Jobs reach a connected client the moment they're due — no polling delay, no cron minimum granularity. Reconnects are automatic if a connection drops.

Automatic retries

A failed job retries on a configurable backoff. A client that disappears mid-job gets its work reclaimed and rescheduled automatically — nothing silently stalls.

Priority & queues

Mark urgent work High or Critical so it jumps the line, and route job types to dedicated named queues so unrelated workloads never compete for the same slot.

Recurring schedules

Cron-style recurring jobs, managed the same way as one-off work — same dashboard, same retry and priority rules, same everything.

Scale out safely

Run as many Axon.Server instances as you want behind a load balancer. Every job still dispatches exactly once, no matter how many instances are polling.


EnqueueAsync.cs
var jobId = await axonClient.EnqueueAsync<BillingJobs>(
    x => x.ChargeInvoice(invoiceId),
    new AxonEnqueueOptions
    {
        Priority   = JobPriority.High,
        QueueName  = "billing",
    });

One call to enqueue

Four lines, and it's scheduled, prioritized, and on the right queue.

Call EnqueueAsync with a strongly-typed method reference — no string job names, no magic keys. Set a priority so urgent work gets seen sooner, and a queue name so it lands on the worker fleet built to handle it. Everything else is Axon's job.

  • Strongly typed — the compiler checks your job call, not a string
  • Fire-and-forget or scheduled — run now, run later, or run on a recurring cadence
  • Chainable — continue one job with another once its parent finishes

Built-in dashboard

See every job, server, and connected client — live.

Mount the dashboard at /axon and get a real-time view of your whole job fleet: what's running, what's scheduled, what failed and why — with retry, delete, and trigger controls, and optional sign-in with Admin/ReadOnly roles.


Bring your own database

Five storage backends. Pick whatever you already run.

Job state persists wherever your infrastructure already lives — SQL Server, PostgreSQL, MySQL, MongoDB, or SQLite for local development. Swap the package, not your application code.

SQL Server
PostgreSQL
MySQL
MongoDB
SQLite

Ready when you are

Enqueue your first job in about four lines.

Open-source, MIT-licensed, no telemetry phoning home. Read the source or start from the quickstart.