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 –
DeletedStatenow have the persistedExceptionproperty. -
Added –
JobContinuationOptions.OnlyOnDeletedStateto create continuations after a failure. -
Added –
Exceptionjob parameter is passed to continuation whenUseResultsInContinuationsmethod is used. -
Added –
FromExceptionAttributeto deal with an antecedent exception in a background job continuation. -
Added – Allow to filter exception types in
AutomaticRetryAttributeby using the newOnlyOnproperty. -
Added –
IBackgroundProcess.UseBackgroundPoolnow allows to pass thread configuration logic. -
Added –
IGlobalConfiguration.UseJobDetailsRenderermethod for custom renderers. -
Added –
BackgroundJobServerOptions.WorkerThreadConfigurationActionoption -
Added – Allow to pass custom data to
ApplyStateContextandElectStateContextinstances. - Added – Preserve custom data dictionary between the entire filter chain.
-
Added –
IGlobalConfiguration.UseDashboardMetricsextension method to pass multiple metrics at once. -
Added – State renderer for the
DeletedStateto display its new exception property. -
Added – Virtual
JobStorage.GetReadOnlyConnectionmethod intended to returnJobStorageConnectionfor replicas. -
Added – Virtual
JobStorage.HasFeaturemethod for querying optional features. -
Added – Optional
GetSetCountandGetUtcDateTimemethods for theJobStorageConnectionclass. -
Added – Optional
AcquireDistributedLockandRemoveFromQueuemethods for theJobStorageTransactionclass. - Added – Support for transactional acknowledge using new storage method for better handling some data loss scenarios.
-
Added –
Factory,StateMachineandPerformerproperties to context classes to avoid injecting services. - Added – Allow to pass transaction to background job state changer when new methods implemented.
-
Added – Optional
ParametersSnapshotproperty forBackgroundJobandJobDataclasses to minimize roundtrips in future. -
Added –
MisfireHandlingMode.Strictto 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
JobContinuationOptionsfor a continuation. -
Added –
CreateJobmethod to theJobStorageTransactionabstract class. -
Added –
SetJobParametermethod to theJobStorageTransactionabstract class. -
Changed – Use the
AttemptsExceededAction.Deleteoption by default in the global automatic retry filter. -
Changed – Move job to the
DeletedStateinstead ofSucceededStatewhen 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
JobFilterAttributeinstance to decrease size -
Changed –
ServerHeartbeatProcessnow usesThreadPriority.AboveNormalto prioritize heartbeats. - Changed – Allow to query job parameters without roundtrip when supported by a storage.
-
Changed – Turn
JobContinuationOptionsenum 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
FromParameterattribute.
Hangfire.SqlServer
-
Added – Recommended Schema 8 migration with fixed
JobQueue.Idcolumn to usebiginttype. -
Added –
SqlServerStorageOptions.PreferMicrosoftDataSqlClientoption to use the corresponding package. -
Added –
SqlServerStorage.SchemaVersionmetric for Dashboard UI. -
Added – Implement optional experimental transactional acknowledge for SQL Server (
UseTransactionalAcknowledgeoption). - Changed – Sliding invisibility timeout-based fetching method is now used by default with 5 minute timeout.
-
Changed – Set default value for the
QueuePollIntervaloption toTimeSpan.Zero. - Changed – Use command batching by default with 5-minute maximum timeout.
-
Changed – Enable
UseRecommendedIsolationLeveloption by default.
Hangfire.NetCore and Hangfire.AspNetCore
-
Added –
IApplicationBuilder.UseHangfireServerthat accepts custom factory forIBackgroundProcessingServer.
by