github HangfireIO/Hangfire v1.8.0-rc1
1.8.0-rc1

latest releases: v1.7.37, v1.8.12, v1.8.11...
pre-release23 months ago

Release Notes

Hangfire.Core

  • 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.
  • AddedJobContinuationOptions.OnlyOnDeletedState to create continuations after a failure.
  • Added – Make it possible to specify multiple JobContinuationOptions values for a continuation.
  • 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 job for each missed recurring job occurrence.
  • AddedDeletedState now have the persisted Exception property populated 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 – Allow to filter exception types in AutomaticRetryAttribute by using the new OnlyOn property.
  • Added – Built-in Remove method for JobFilterCollection to remove global filters based on their type.
  • AddedIGlobalConfiguration.UseFilterProvider extension method to unify the configuration.
  • Changed – Use the AttemptsExceededAction.Delete option by default in the global automatic retry filter.
  • Changed – Query time from storage in recurring and delayed schedulers when supported by storage.
  • Changed – Increase the default value for the BackgroundJobServerOptions.StopTimeout to 500 ms.
  • Changed – Speedup delayed jobs when custom default queue is specified by avoiding extra state transition.
  • Changed – Move job to the DeletedState instead of SucceededState when its invocation was canceled by a filter.
  • 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 configurable with the UseDarkModeSupportForDashboard method (by @danillewin).
  • Added – Dashboard UI now have 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.
  • AddedIGlobalConfiguration.UseJobDetailsRenderer method for custom renderers for 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.
  • Changed – Make it possible to display methods of non-loaded jobs in Dashboard UI when supported by storage.
  • Changed – Improved display of real-time chart with more accents on failed and deleted jobs.
  • Changed – Don't display queue name in state transition list when it's the default one.
  • Changed – Display scheduled job count when 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 transaction to background job state changer when new methods implemented.
  • Changed – Ignore some members when serializing a JobFilterAttribute instance to decrease payload size.

Storage

  • Added – Virtual JobStorage.GetReadOnlyConnection method intended to return JobStorageConnection for replicas.
  • Added – Virtual JobStorage.HasFeature method for querying optional features.
  • Added – Optional GetSetCount and GetUtcDateTime methods for the JobStorageConnection class.
  • Added – Optional AcquireDistributedLock and RemoveFromQueue methods for the JobStorageTransaction class.
  • Added – Support for transactional acknowledge using new storage method for better handling some data loss scenarios.
  • AddedCreateJob method to the JobStorageTransaction abstract class.
  • AddedSetJobParameter method to the JobStorageTransaction abstract class.
  • Added – Experimental JobStorageConnection.SetContains method.
  • Added – Optional ParametersSnapshot property for BackgroundJob and JobData classes to minimize roundtrips in future.
  • Added – Fetch "Retries" metric with other statistics when supported by storage.
  • AddedJobStorageMonitor class with more available methods for the new features.
  • Changed – Allow to query job parameters without additional roundtrip when supported by a storage.
  • Changed – Expose state data dictionaries in list DTOs when supported by storage.

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 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.SqlServer

  • Added – Recommended Schema 8 migration with fixed JobQueue.Id column to use the bigint type.
  • Added – Automatic client package detection based on available types, preferring System.Data.SqlClient (by @0xced).
  • AddedSqlServerStorageOptions.DbProviderFactory option to use custom provider factory.
  • AddedTryAutoDetectSchemaDependentOptions option to automatically enable options based on schema.
  • AddedSqlServerStorage.SchemaVersion metric for Dashboard UI.
  • Added – Optional experimental transactional acknowledge for SQL Server (UseTransactionalAcknowledge option).
  • Added – Implement the Connection.GetUtcDateTime feature to make work new changes in schedulers.
  • 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 5 minute timeout.
  • Changed – Use command batching by default with 5-minute maximum timeout.
  • Changed – Enable UseRecommendedIsolationLevel option by default.
  • ChangedGetJobData now populates JobData.ParametersSnapshot property to avoid additional round-trips.
  • Changed – Display scheduled and processing jobs in the ascending order in Dashboard UI.
  • DeprecatedUsePageLocksOnDequeue option is now obsolete and doesn't affect anything.
  • Breaking – Dropped NET45 platform target in favor of NET451 target to support Visual Studio 2022.

Hangfire.SqlServer.Msmq

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

Hangfire.NetCore and Hangfire.AspNetCore

  • AddedIApplicationBuilder.UseHangfireServer that accepts custom factory for IBackgroundProcessingServer.

Don't miss a new Hangfire release

NewReleases is sending notifications on new releases.