github HangfireIO/Hangfire v1.8.0
1.8.0

latest releases: v1.8.14, v1.8.13, v1.7.37...
17 months ago

Release Notes

Please see more human-friendly release notes in our blog https://www.hangfire.io/blog/2023/04/28/hangfire-1.8.0.html. Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.

Hangfire.Core

  • Breaking – Dropped the NET45 platform target in favor of the NET451 target to support Visual Studio 2022.
  • Added – Introduce the Job.Queue property, so jobs now can have their own queue specified.
  • Added – Method overloads to create background jobs directly with a custom default queue.
  • Added – Method overloads to create recurring jobs directly with a custom default queue.
  • AddedIBackgroundJobClient.Create method overloads with the new queue parameter.
  • Added – Allow to filter exception types in AutomaticRetryAttribute by using the new OnlyOn property.
  • AddedDeletedState now has the persisted Exception property populated after a failure.
  • AddedJobContinuationOptions.OnlyOnDeletedState to create continuations after a failure.
  • AddedException job parameter is passed to continuation when UseResultsInContinuations method is used.
  • AddedFromExceptionAttribute to deal with an antecedent exception in a background job continuation.
  • Added – Make it possible to specify multiple JobContinuationOptions values for a continuation.
  • AddedBackgroundJobServerOptions.IsLightweightServer option to run a server with no storage processes.
  • Added – Ability to use custom formattable resource identifiers for the DisableConcurrentExecution filter.
  • Added – Pass ServerId to FailedState instances to simplify the debugging on different servers.
  • Added – Allow to pass job parameters when creating a job (by @brian-knoll-micronetonline).
  • AddedMisfireHandlingMode.Strict to create a job for each missed recurring job occurrence.
  • Added – Support for default culture and UI culture via the UseDefaultCulture configuration method.
  • Added – Introduce the captureDefault parameter in the CaptureCulture filter.
  • AddedIGlobalConfiguration.UseFilterProvider extension method to unify the configuration.
  • Added – Built-in Remove method for JobFilterCollection to remove global filters based on their type.
  • AddedCompatibilityLevel.Version_180 flag to avoid storing culture parameters when they are the same as the default ones.
  • Changed – Create job atomically when Transaction.CreateJob feature is supported by the storage.
  • Changed – Query time from storage in recurring and delayed schedulers when supported by storage.
  • Changed – Move job to the DeletedState instead of SucceededState when its invocation was canceled by a filter.
  • Changed – Speedup delayed jobs when a custom default queue is specified by avoiding extra state transition.
  • Changed – Use UI culture from CurrentCulture parameter when CurrentUICulture one is missing.
  • Changed – Increase the default value for the BackgroundJobServerOptions.StopTimeout to 500 ms.
  • DeprecatedAddOrUpdate overloads with optional params defined in the RecurringJobManagerExtensions class.
  • DeprecatedAddOrUpdate overloads with optional parameters defined in the RecurringJob class.
  • DeprecatedAddOrUpdate method overloads with no recurringJobId parameter.
  • DeprecatedRecurringJobOptions.QueueName property, new methods should be used instead.
  • Breaking – Dropped NET45 platform target in favor of NET451 target to support Visual Studio 2022.

Dashboard UI

  • Added – Dark mode support for Dashboard UI depending on the system settings (by @danillewin).
  • Added – Dashboard UI now has a full-width layout to display more data (by @danillewin).
  • Added – Allow to add custom JavaScript and CSS files to the Dashboard UI via the DashboardRoutes class.
  • AddedDefaultRecordsPerPage property on the DashboardOptions class (by @PaulARoy).
  • AddedIGlobalConfiguration.UseJobDetailsRenderer method for custom renderers for the Job Details page.
  • Added – Display deleted jobs in the Realtime and History graphs when supported by storage.
  • AddedIGlobalConfiguration.UseDashboardMetrics extension method to pass multiple metrics at once.
  • Added – State renderer for the DeletedState to display its new exception property.
  • Added – Support for new MonitoringApi methods for the Awaiting Jobs page.
  • Changed – Make it possible to display methods of non-loaded jobs in the Dashboard UI when supported by storage.
  • Changed – Improved display of realtime chart with more accents on failed and deleted jobs.
  • Changed – Don't display the queue name in the state transition list when it's the default one.
  • Changed – Display scheduled job count when the enqueued count is zero on the main metric.

Extensibility

  • AddedFactory, StateMachine, and Performer properties to context classes to avoid injecting services.
  • Added – Allow to pass custom data to ApplyStateContext and ElectStateContext instances.
  • Added – Preserve custom data dictionary between the entire filter chain.
  • Added – Allow to pass a transaction to background job state changer when new methods are implemented.
  • Changed – Ignore some members when serializing a JobFilterAttribute instance to decrease the payload size.

Storage

  • Added – Virtual JobStorage.GetReadOnlyConnection method intended to return JobStorageConnection for replicas.
  • Added – Virtual JobStorage.HasFeature method for querying optional features.
  • Added – The JobStorageFeatures class to avoid using magic strings in storage features.
  • Added – Optional GetSetCount, GetSetContains, and GetUtcDateTime methods for the JobStorageConnection class.
  • Added – Optional AcquireDistributedLock and RemoveFromQueue methods for the JobStorageTransaction class.
  • Added – Optional CreateJob and SetJobParameter methods for the JobStorageTransaction class.
  • Added – Optional ParametersSnapshot property for BackgroundJob and JobData classes to minimize roundtrips in the future.
  • Added – Support for transactional acknowledgment using a new storage method for better handling some data loss scenarios.
  • Added – Fetch Retries and Awaiting metrics in StatisticsDto properties when supported by storage.
  • Added – The JobStorageMonitor class with more available methods for the new features.
  • Changed – Allow to query job parameters without additional roundtrip when supported by storage.
  • Changed – Expose state data dictionaries in list DTOs when supported by storage.
  • Changed – Rely on storage indexing with the Monitoring.AwaitingJobs feature.

Internals

  • AddedIBackgroundProcess.UseBackgroundPool now allows to pass thread configuration logic.
  • AddedBackgroundJobServerOptions.WorkerThreadConfigurationAction option for custom thread configuration.
  • Changed – Allow changing queues on the fly with custom worker configuration.
  • Changed – Avoid storage roundtrip to query job data in worker, take data from previous state change.
  • ChangedFromParameterAttribute-based logic now always overwrites arguments, even with non-null values.
  • Changed – Turn the JobContinuationOptions enum into flags while still possible.
  • Changed – Re-implement TaskExtensions.WaitOneAsync only with the RegisterWaitForSingleObject method.
  • ChangedServerHeartbeatProcess now uses ThreadPriority.AboveNormal to prioritize heartbeats.

Hangfire.NetCore

  • AddedIApplicationBuilder.UseHangfireServer that accepts custom factory for IBackgroundProcessingServer.
  • Addednet451 and netstandard1.3 targets for the package.
  • Changed – Use netstandard2.1 target instead of netcoreapp3.0 for the package.
  • Changed – Send the "stop" signal earlier when the host supports .NET Standard 2.1.
  • Changed – Don't throw ObjectDisposedException when hosted service is disposed twice.

Hangfire.AspNetCore

  • Breaking – Make the package to be dependent on Hangfire.NetCore and use the same types.
  • AddedIApplicationBuilder.UseHangfireServer that accepts custom factory for IBackgroundProcessingServer.

Hangfire.SqlServer

  • Breaking – Prioritise Microsoft.Data.SqlClient package over System.Data.SqlClient one.
  • Breaking – Dropped the NET45 platform target in favor of the NET451 target to support Visual Studio 2022.
  • AddedSchema 8 migration with fixed JobQueue.Id column to use the bigint type.
  • AddedSchema 9 migration that creates an index for the State.CreatedAt column.
  • Added – Automatic client package detection based on available types, preferring System.Data.SqlClient (by @0xced).
  • AddedSqlServerStorageOptions.DbProviderFactory option to use a custom provider factory.
  • Added – Clean up of old state entries of a non-finished job when InactiveStateExpirationTimeout is set.
  • AddedTryAutoDetectSchemaDependentOptions option to automatically enable options based on the schema.
  • Added – Optional experimental transactional acknowledge for SQL Server (UseTransactionalAcknowledge option).
  • Added – Implement the Connection.GetUtcDateTime feature to make work the new changes in schedulers.
  • AddedSqlServerStorage.SchemaVersion metric for Dashboard UI.
  • AddedDefaultQueueProvider option to specify a custom default queue provider.
  • Changed – Remove dependency on System.Data.SqlClient for Hangfire.SqlServer (by @0xced).
  • Changed – Set default value for the QueuePollInterval option to TimeSpan.Zero.
  • Changed – Polling delay when QueuePollInterval is set to zero now defaults to 200 ms.
  • Changed – Sliding invisibility timeout-based fetching method is now used by default with a 5-minute timeout.
  • Changed – Use command batching by default with a 5-minute maximum timeout.
  • Changed – Enable the UseRecommendedIsolationLevel option by default.
  • ChangedGetJobData now populates the JobData.ParametersSnapshot property to avoid additional roundtrips.
  • Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
  • Changed – Implement the Transaction.AcquireDistributedLock feature.
  • Changed – Implement the GetSetCount.Limited feature.
  • Changed – Implement the GetSetContains feature.
  • Changed – Bump the internal version of Dapper to 2.0.123.
  • Changed – Enable common metrics for SQL Server storage to be shown by default.
  • Changed – Enable the Monitoring.AwaitingJobs feature for SQL storage.
  • DeprecatedUsePageLocksOnDequeue option is now obsolete and doesn't affect anything.

Hangfire.SqlServer.Msmq

  • Breaking – Dropped the NET45 platform target in favor of the NET451 target to support Visual Studio 2022.

Don't miss a new Hangfire release

NewReleases is sending notifications on new releases.