README.md

April 15, 2026 · View on GitHub

TickerQ Logo
TickerQ

The modern job scheduler for .NET
Source-generated task scheduling with built-in persistence, cron & time-based execution, and real-time monitoring.

NuGet Downloads NuGet Version Build Status Documentation Discord OpenCollective


Why TickerQ?

Zero reflection, AOT readySource generators at compile time. No runtime reflection, no magic strings, fully trimmable.
Your databaseEF Core (PostgreSQL, SQL Server, SQLite, MySQL) or Redis. No separate storage.
Real-time dashboardBuilt-in SignalR dashboard. Monitor, inspect, manage — no paid add-ons.
Multi-nodeRedis heartbeats, dead-node cleanup, lock-based coordination. Just add instances.
Minimal setupAddTickerQ() → decorate a method → schedule. Minutes, not hours.

Features

  • Time & cron scheduling — one-off and recurring jobs
  • Source-generated — compile-time function registration for maximum performance
  • Dual persistence — EF Core (PostgreSQL, SQL Server, SQLite, MySQL) or Redis
  • Live dashboard — real-time UI with SignalR — screenshots
  • Retry & throttling — configurable retry policies with backoff
  • Dependency injection — first-class DI support
  • Multi-node — distributed coordination via Redis heartbeats and dead-node cleanup
  • Hub — centralized scheduling across applications via TickerQ Hub

Quick Start

dotnet add package TickerQ

1. Register services

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddTickerQ();

var app = builder.Build();
app.UseTickerQ();
app.Run();

2. Create a job

using TickerQ.Utilities.Base;

public class MyJobs
{
    [TickerFunction("HelloWorld")]
    public async Task HelloWorld(
        TickerFunctionContext context,
        CancellationToken cancellationToken)
    {
        Console.WriteLine($"Hello from TickerQ! Job ID: {context.Id}");
    }
}

3. Schedule it

public class MyService(ITimeTickerManager<TimeTickerEntity> manager)
{
    public async Task Schedule()
    {
        await manager.AddAsync(new TimeTickerEntity
        {
            Function = "HelloWorld",
            ExecutionTime = DateTime.UtcNow.AddSeconds(10)
        });
    }
}

Packages

PackageDescription
TickerQCore scheduler engine
TickerQ.UtilitiesShared types, entities, and interfaces
TickerQ.EntityFrameworkCoreEF Core persistence provider
TickerQ.Caching.StackExchangeRedisRedis persistence and distributed coordination
TickerQ.DashboardReal-time dashboard UI
TickerQ.Instrumentation.OpenTelemetryOpenTelemetry tracing
TickerQ.SourceGeneratorCompile-time function registration

Note: All packages are versioned together. Always update all packages to the same version.

TickerQ Hub

Centralized scheduling across applications — hub.tickerq.net

Documentation

Full documentation at tickerq.net — docs are open-source at TickerQ-UI.

Sponsors & Backers

Support TickerQ through OpenCollective.

Contributing

PRs, ideas, and issues are welcome! Please read our Contributing Guide and sign the CLA before submitting a pull request.

Contributors

Thanks to all our wonderful contributors! See CONTRIBUTORS.md for details.

License

Dual licensed under MIT and Apache 2.0 © Arcenox LLC