The modern job scheduler for .NET
Source-generated task scheduling with built-in persistence, cron & time-based execution, and real-time monitoring.
| Zero reflection, AOT ready | Source generators at compile time. No runtime reflection, no magic strings, fully trimmable. |
| Your database | EF Core (PostgreSQL, SQL Server, SQLite, MySQL) or Redis. No separate storage. |
| Real-time dashboard | Built-in SignalR dashboard. Monitor, inspect, manage — no paid add-ons. |
| Multi-node | Redis heartbeats, dead-node cleanup, lock-based coordination. Just add instances. |
| Minimal setup | AddTickerQ() → decorate a method → schedule. Minutes, not hours. |
- 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
dotnet add package TickerQvar builder = WebApplication.CreateBuilder(args); builder.Services.AddTickerQ(); var app = builder.Build(); app.UseTickerQ(); app.Run();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}"); } }public class MyService(ITimeTickerManager<TimeTickerEntity> manager) { public async Task Schedule() { await manager.AddAsync(new TimeTickerEntity { Function = "HelloWorld", ExecutionTime = DateTime.UtcNow.AddSeconds(10) }); } }| Package | Description |
|---|---|
TickerQ | Core scheduler engine |
TickerQ.Utilities | Shared types, entities, and interfaces |
TickerQ.EntityFrameworkCore | EF Core persistence provider |
TickerQ.Caching.StackExchangeRedis | Redis persistence and distributed coordination |
TickerQ.Dashboard | Real-time dashboard UI |
TickerQ.Instrumentation.OpenTelemetry | OpenTelemetry tracing |
TickerQ.SourceGenerator | Compile-time function registration |
Note: All packages are versioned together. Always update all packages to the same version.
Centralized scheduling across applications — hub.tickerq.net
Full documentation at tickerq.net — docs are open-source at TickerQ-UI.
Support TickerQ through OpenCollective.
PRs, ideas, and issues are welcome! Please read our Contributing Guide and sign the CLA before submitting a pull request.
Thanks to all our wonderful contributors! See CONTRIBUTORS.md for details.
Dual licensed under MIT and Apache 2.0 © Arcenox
