Minimal API style
Register jobs with delegates using the same fluent style as endpoint mapping, with arguments resolved from DI and run payloads.
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();