Hangfire
Installation
dotnet add package Dosaic.Plugins.Jobs.Hangfire<PackageReference Include="Dosaic.Plugins.Jobs.Hangfire" Version="" />Configuration
hangfire:
# PostgreSQL storage (ignored when inMemory: true)
host: localhost
port: 5432
database: postgres
user: postgres
password: postgres
# Use in-memory storage instead of PostgreSQL (useful for development)
inMemory: true
# Hostname from which the Hangfire dashboard is accessible.
# Leave empty to disable dashboard access entirely.
allowedDashboardHost: localhost
# Enable Microsoft Feature Management integration to toggle jobs via config
enableJobsByFeatureManagementConfig: false
# Additional queues to listen on (the "default" queue is always included)
queues:
- default
- critical
# Optional tuning
pollingIntervalInMs: 5000 # defaults to Hangfire built-in value
workerCount: 10 # defaults to Hangfire built-in value
invisibilityTimeoutInMinutes: 30
maxJobArgumentsSizeToRenderInBytes: 4096 # max bytes of job args displayed in dashboardConfiguration class reference
Usage
Defining jobs
Simple async job (no parameters)
Parameterized async job
Registering recurring jobs
Option 1 — attribute-based auto-registration
Option 2 — programmatic registration via ConfigureJobs
ConfigureJobsFire-and-forget and delayed jobs via IJobManager
IJobManagerQuerying job state via IJobManager
IJobManagerDashboard
Attributes
[RecurringJob(cronPattern, queue)]
[RecurringJob(cronPattern, queue)][JobTimeout(timeout, TimeUnit)]
[JobTimeout(timeout, TimeUnit)][JobTimeZone(TimeZoneInfo)]
[JobTimeZone(TimeZoneInfo)][UniquePerQueueAttribute(queue)]
[UniquePerQueueAttribute(queue)][JobCleanupExpirationTimeAttribute(days)]
[JobCleanupExpirationTimeAttribute(days)]Filters
LogJobExecutionFilter (always active)
LogJobExecutionFilter (always active)EnabledByFeatureFilter (opt-in)
EnabledByFeatureFilter (opt-in)Custom storage / server configuration (IHangfireConfigurator)
IHangfireConfigurator)Observability
Health check
OpenTelemetry tracing
Prometheus metrics
Metric
Description
Job naming convention
Further reading
Last updated