Skip to content

Surefire

Distributed job scheduling for .NET with a minimal API style.

Minimal API style

Register jobs with delegates using the same fluent style as endpoint mapping, with arguments resolved from DI and run payloads.

Distributed

Run multiple nodes with coordinated scheduling and recovery.

Real-time dashboard

Built-in UI with live log streaming, progress tracking, job management, and node monitoring.

Feature rich

Retries, cron scheduling, queues, rate limiting, concurrency limits, lifecycle hooks, streaming with IAsyncEnumerable<T>, and OpenTelemetry.

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSurefire();
var app = builder.Build();
app.AddJob("Add", (int a, int b) => a + b);
app.AddJob("DataImport", async (ILogger<Program> logger, CancellationToken ct) =>
{
for (var i = 1; i <= 10; i++)
{
logger.LogInformation("Step {Step}/10", i);
await Task.Delay(1000, ct);
}
}).WithDescription("Imports data and reports progress")
.WithCron("* * * * *");
app.MapSurefireDashboard();
app.Run();