This is a release candidate for the upcoming version 1.7.0 with a lot of new features and improvements for almost all the aspects of background job processing. Below you’ll find a short list of them as well as upgrade details, and more information will be published later. Please note this is a pre-release, and it’s not suitable for critical environments.
Overview
.NET Core: native .NET Standard 2.0 targeting, IHostedService
support via AddHangfireServer
method, better interoperability with .NET Framework by handling TypeForwardedFrom
attribute, IServiceProvider
-based overload for configuration action.
Dashboard UI: read-only view based on a callback, Rickshaw library replaced with Chart.js, support for custom job displaying strategies via IDashboardJobNameProvider
.
Background Processing: multi-stage shutdown, unified model for handling sync and async processes, less aggressive logging on faults, automatic server restarts, better handling of thread aborts and interrupts, custom TaskScheduler support for async jobs.
Background Jobs: compact payloads, TypeNameHandling.Auto
support for arguments, compact type serialization, custom automatic retry delays, faster delayed jobs, ValueTask
-based methods support, CancellationToken
with asynchronous cancellation, idempotent completion filter, dynamic assembly load.
Recurring Jobs: support for non-standard L
, W
and #
characters, robust daylight saving time transition handling, indexed fetch, support for seconds, custom time zone resolver, transactional updates to avoid any race conditions.
SQL Server Storage: bigint
-based identifiers, no global locks, less indexes, better physical data layout, long polling in built-in queues, transactionless fetch, query improvements.
Upgrading
Please see the Upgrading Guide article for detailed instructions on how to upgrade, because some of the new features are disabled by default for compatibility reasons. Rolling upgrades are explicitly supported starting from this version. And the first step is to bump versions of the following packages, depending on which ones you use.
<PackageReference Include="Hangfire" Version="1.7.0-rc2" />
<PackageReference Include="Hangfire.Core" Version="1.7.0-rc2" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.0-rc2" />
<PackageReference Include="Hangfire.SqlServer" Version="1.7.0-rc2" />
<PackageReference Include="Hangfire.SqlServer.Msmq" Version="1.7.0-rc2" />