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 LLC
