Hangfire 1.8.0-beta2 and beta1 recently released. The new versions bring a lot of improvements to create more complex workflows with new continuation options, improve role of the DeletedState
that now has its own exception information and displayed on graphs when supported by an underlying storage, bring more methods for underlying abstractions to reduce the number of round-trips to a storage and other features as well. Also this version has better defaults for Hangfire.SqlServer package, and sliding invisibility timeout option will now be used by default.
Please note this is a pre-release version so it should be used only in development and staging environments. The final release should be available in Sep/Oct 2021 after adding a ton of unit and integration tests. Upgrade notes will only be available slightly before the final release is made, however breaking changes are avoided at all costs – just don’t use the new features before upgrading the whole environment to the latest version.
Release Notes
Hangfire.Core
- Added – Display deleted jobs in the Realtime and History graphs when supported by storage.
-
Added –
DeletedState
now have the persistedException
property. -
Added –
JobContinuationOptions.OnlyOnDeletedState
to create continuations after a failure. -
Added –
Exception
job parameter is passed to continuation whenUseResultsInContinuations
method is used. -
Added –
FromExceptionAttribute
to deal with an antecedent exception in a background job continuation. -
Added – Allow to filter exception types in
AutomaticRetryAttribute
by using the newOnlyOn
property. -
Added –
IBackgroundProcess.UseBackgroundPool
now allows to pass thread configuration logic. -
Added –
IGlobalConfiguration.UseJobDetailsRenderer
method for custom renderers. -
Added –
BackgroundJobServerOptions.WorkerThreadConfigurationAction
option -
Added – Allow to pass custom data to
ApplyStateContext
andElectStateContext
instances. - Added – Preserve custom data dictionary between the entire filter chain.
-
Added –
IGlobalConfiguration.UseDashboardMetrics
extension method to pass multiple metrics at once. -
Added – State renderer for the
DeletedState
to display its new exception property. -
Added – Virtual
JobStorage.GetReadOnlyConnection
method intended to returnJobStorageConnection
for replicas. -
Added – Virtual
JobStorage.HasFeature
method for querying optional features. -
Added – Optional
GetSetCount
andGetUtcDateTime
methods for theJobStorageConnection
class. -
Added – Optional
AcquireDistributedLock
andRemoveFromQueue
methods for theJobStorageTransaction
class. - Added – Support for transactional acknowledge using new storage method for better handling some data loss scenarios.
-
Added –
Factory
,StateMachine
andPerformer
properties to context classes to avoid injecting services. - Added – Allow to pass transaction to background job state changer when new methods implemented.
-
Added – Optional
ParametersSnapshot
property forBackgroundJob
andJobData
classes to minimize roundtrips in future. -
Added –
MisfireHandlingMode.Strict
to create job for each missed recurring job occurrence. - Added – Allow to pass parameters when creating a job (by @brian-knoll-micronetonline).
-
Added – Make it possible to use multiple
JobContinuationOptions
for a continuation. -
Added –
CreateJob
method to theJobStorageTransaction
abstract class. -
Added –
SetJobParameter
method to theJobStorageTransaction
abstract class. -
Changed – Use the
AttemptsExceededAction.Delete
option by default in the global automatic retry filter. -
Changed – Move job to the
DeletedState
instead ofSucceededState
when its invocation was canceled by a filter. -
Changed –
FromParameterAttribute
-based logic now always overwrites arguments, even with non-null values. - Changed – Improved display of real-time chart with more accents on failed and deleted jobs.
-
Changed – Ignore some members when serializing a
JobFilterAttribute
instance to decrease size -
Changed –
ServerHeartbeatProcess
now usesThreadPriority.AboveNormal
to prioritize heartbeats. - Changed – Allow to query job parameters without roundtrip when supported by a storage.
-
Changed – Turn
JobContinuationOptions
enum into flags while still possible. - Changed – Fetch “Retries” metric with other statistics when supported by storage.
- Changed – Avoid storage roundtrip to query job data in worker, take data from previous state change.
-
Changed – Don’t overwrite existing argument values with null job parameters when using
FromParameter
attribute.
Hangfire.SqlServer
-
Added – Recommended Schema 8 migration with fixed
JobQueue.Id
column to usebigint
type. -
Added –
SqlServerStorageOptions.PreferMicrosoftDataSqlClient
option to use the corresponding package. -
Added –
SqlServerStorage.SchemaVersion
metric for Dashboard UI. -
Added – Implement optional experimental transactional acknowledge for SQL Server (
UseTransactionalAcknowledge
option). - Changed – Sliding invisibility timeout-based fetching method is now used by default with 5 minute timeout.
-
Changed – Set default value for the
QueuePollInterval
option toTimeSpan.Zero
. - Changed – Use command batching by default with 5-minute maximum timeout.
-
Changed – Enable
UseRecommendedIsolationLevel
option by default.
Hangfire.NetCore and Hangfire.AspNetCore
-
Added –
IApplicationBuilder.UseHangfireServer
that accepts custom factory forIBackgroundProcessingServer
.