HangFire.Core 1.7.0-rc1

Hangfire Core Components

An easy and reliable way to perform fire-and-forget, delayed and recurring long-running, short-running, CPU or I/O intensive tasks inside ASP.NET application. No Windows Service / Task Scheduler required. Even ASP.NET is not required.
     Backed by Redis, SQL Server, SQL Azure or MSMQ. This is a .NET alternative to Sidekiq, Resque and Celery.
     https://www.hangfire.io/

This is a prerelease version of HangFire.Core.
There is a newer version of this package available.
See the version list below for details.
Install-Package HangFire.Core -Version 1.7.0-rc1
dotnet add package HangFire.Core --version 1.7.0-rc1
<PackageReference Include="HangFire.Core" Version="1.7.0-rc1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HangFire.Core --version 1.7.0-rc1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

https://www.hangfire.io/blog/

1.7.0-rc1
• Added – `IGlobalConfiguration.SetDataCompatibilityLevel` to enable rolling upgrades from version 1.6.
• Added – `IGlobalConfiguration.UseRecommendedSerializerSettings` method for new installations.
• Added – Assemblies now loaded automatically when resolving a type when using default type resolver.
• Added – Custom `TaskScheduler` can now be specified in `BackgroundJobServerOptions` for workers.
• Added – `IdempotentCompletionAttribute` filter to enforce strict order for continuations.
• Added – `IBackgroundJobClient.ContinueJobWith` methods to replace `ContinueWith` ones in future for clarity.
• Added – `JobStorage.LinearizableReads` virtual property to avoid unnecessary waits in state changer.
• Changed – Split serializer setting to Internal and User scopes to isolate them (Version_170 Switch).
• Changed – Don't allow to affect internal serialization even by `JsonConvert.DefaultSettings` (Version_170 Switch).
• Changed – Share the same type binder between Hangfire itself and Newtonsoft.Json (Version_170 Switch).
• Changed – Use more compact representation of dates when using `SerializeDateTime` (Version_170 Switch).
• Changed – Stop using special case for `DateTime` argument serialization (Version_170 Switch).
• Changed – Don't serialize unused `AwaitingState.Expiration` field (Version_170 Switch).
• Changed – Use custom `SynchronizationContext` for async methods to run their continuations on worker thread.
• Changed – Specify parameter type when serializing arguments to allow using `TypeNameHandling.Auto` option.
• Changed – Use case sensitive search when resolving a type as by default in .NET.
• Changed – Make `SucceededState` constructor public to allow state serialization.
• Fixed – Worker now logs an error, when all the state change attempts failed due to an exception.
• Fixed – Ensure `RecurringJobScheduler` doesn't go into infinite loop when there's server of an older version.
• Fixed – Implement `BackgroundTaskScheduler.MaximumConcurrencyLevel` property.
• Fixed – Dashboard renderer for `AwaitingState` displays `Option` property as string again.
• Fixed – Don't serialize arguments multiple times when showing job details in dashboard.
• Fixed – `DateTimeOffset` conversion error when it was serialized with `TypeConverter`.
• Fixed – Remove duplicate of argument deserialization code for obsolete `Job` class methods.
• Fixed – Decorate all the exceptions with the `SerializableAttribute`.
• Project – Add `DataCompatibilityRangeFact` and `DataCompatibilityRangeTheory` classes for compatibility checks.
• Project – Reduce test execution time by removing unnecessary waits.
• Ported – Merged updates from version 1.6.23.

1.7.0-beta4
• Changed – `StopTimeout` introduced in 1.7.0-beta3 now defaults to zero seconds.
• Fixed – `NotSupportedException` thrown by `RecurringJobScheduler` (regression).
• Fixed – `NotSupportedException` thrown by `DelayedJobScheduler` (regression).
• Fixed – `RecurringJobManager.AddOrUpdate` method doesn't preserve `LastJobId` (regression).
• Fixed – Cache results of the `IsBatchingAvailable` method per connection type.

1.7.0-beta3
• Added – Multi-stage shutdown to wait for graceful completion before starting to abort jobs.
• Added – Asynchronous checks for job cancellation, `IJobCancellationToken` can be replaced with `CancellationToken` (by @pieceofsummer).
• Added – Possibility to create millions of recurring jobs without stressing the scheduler.
• Added – Second-based recurring jobs are fully supported now with 6-part cron expressions.
• Added – Support for custom `TimeZoneInfo` resolvers in recurring jobs for interoperability purposes.
• Added – Package now explicitly targets .NET Standard 2.0, and .NET Framework 4.6 target added as well.
• Added – Type roundtrip support between .NET Core and .NET Framework for most common types.
• Added – Allow to specify queue names based on job arguments with `QueueAttribute` via patterns.
• Added – `PerformContext.Storage` property to allow server filters to spawn connections.
• Added – `GetFirstByLowestScoreFromSet` connection method overload that returns multiple items (by @cdschneider).
• Changed – New type serialization is disabled by default for compatibility reasons.
• Changed – Cronos package upgraded to 0.7.0 and internalized even on .NET Standard platforms.
• Changed – Replace Rickshaw with Chart.js to have beautiful charts with less headache.
• Changed – `DelayedJobScheduler` is able to use the new storage method to query multiple jobs at once.
• Changed – `RecurringJobScheduler` now uses index-based checks to fetch only those jobs that should be scheduled.
• Fixed – `ArgumentNullException` when job class contains method with non-resolvable generic arguments.
• Fixed – Re-add missing fonts as embedded resources due to a regression appeared in 1.7.0-beta2.
• Fixed – "Failed to initialize CoreCLR" error, by removing reference to `Microsoft.NETCore.Portable.Compatibility`.
• Fixed – Possible race conditions in `RecurringJobScheduler` that may lead to job duplicates.
• Fixed – Configuration inconsistency introduced in 1.6.18 leading to issues with custom `JobActivator`.
• Fixed – Backward compatibility issue with type serialization when `TypeNameHandling.All` is used.
• Fixed – Triggering the recurring task doesn't update its last execution time.
• Fixed – Recurring job which don't have next execution (intentionally or not) don't cause exception.
• Fixed – Dashboard recurring jobs sorting is random (now it's based on next execution time).
• Fixed – Performance problems with huge amount of recurring jobs.
• Fixed – NextExecution field of a recurring job has delay in value getting set.
• Fixed – Dashboard graphs have improper sizing.
• Ported – Merged updates from version 1.6.21 and 1.6.22.
   
1.7.0-beta2
• Fixed – `MissingMethodException` when using Newtonsoft.Json 11 in .NET Core 2.X with continuations (by @pieceofsummer).
• Ported – Merged updates from versions 1.6.18 – 1.6.20.
   
1.7.0-beta1
• Added – Entry point for custom job naming strategies available for dashboard (by @pieceofsummer).
• Added – JobDisplayNameAttribute class for displaying jobs in dashboard, available on .NET Core (by @pieceofsummer).
• Added – Support async jobs returning ValueTask<T> and other await-compatible types (by @pieceofsummer).
• Added – Support for asynchronous background processes, opens the road toward async storage.
• Added – Circuit breaker pattern for background processes to reduce the logging pressure.
• Added – Processing server is now able to detect it was expired, and restart itself with the new id.
• Added – Ability to use custom delays for automatic retries of a background job.
• Added – ThreadAbortException and ThreadInterruptedException handling to keep the background process running.
• Added – Support for complex Cron expressions, including the `L`, `W`, `#` characters.
• Added – JobActivator.BeginScope method overload with the full PerformContext (by @jeroenvervaeke).
• Added – Support for read-only view for dashboard (by @mikechamberlain).
• Added – Storage property to control the job expiration time (by @rsilvanet).
• Changed – Decrease the size of serialized payloads and remove version information.
• Fixed – Server disappears from the list, but still performing the background processing.
• Fixed – Logging is too aggressive on transient errors.
• Fixed – Daylight saving time transitions now handled perfectly in recurring jobs thanks to Cronos.
• Fixed – Confusing Cron scheduling, when both day-of-week and day-of-month fields set.

Version History

Version Downloads Last updated
1.7.1 4,813 4/16/2019
1.7.0 32,372 3/29/2019
1.7.0-rc2 1,341 3/22/2019
1.7.0-rc1 1,680 3/15/2019
1.7.0-beta4 6,133 2/18/2019
1.7.0-beta3 168 2/15/2019
1.7.0-beta2 32,627 9/1/2018
1.7.0-beta1 51,305 3/2/2018
1.6.25 776 4/9/2019
1.6.24 6,394 3/27/2019
1.6.23 44,470 3/13/2019
1.6.22 192,894 1/25/2019
1.6.21 411,995 11/1/2018
1.6.20 582,269 7/31/2018
1.6.19 644,765 4/6/2018
1.6.18 6,611 4/5/2018
1.6.17 1,139,715 9/19/2017
1.6.16 105,778 9/2/2017
1.6.15 184,800 8/8/2017
1.6.14 355,859 6/16/2017
1.6.13 48,962 6/7/2017
1.6.12 662,558 3/22/2017
1.6.11 25,971 3/14/2017
1.6.10 24,678 3/13/2017
1.6.9 41,236 3/2/2017
1.6.8 246,564 12/21/2016
1.6.7 125,239 11/25/2016
1.6.6 169,940 10/13/2016
1.6.5 103,647 9/24/2016
1.6.4 77,062 8/30/2016
1.6.3 75,023 8/19/2016
1.6.2 47,037 8/5/2016
1.6.1 321,515 7/27/2016
1.6.0 279,708 7/15/2016
1.5.9 23,341 7/11/2016
1.5.8 32,091 6/17/2016
1.5.7 23,391 5/30/2016
1.5.6 84,756 4/22/2016
1.5.5 15,628 4/14/2016
1.5.4 31,030 3/22/2016
1.5.3 249,992 11/6/2015
1.5.2 26,428 10/15/2015
1.5.1 2,007 10/14/2015
1.5.0 89,481 10/1/2015
1.4.7 1,747 10/1/2015
1.4.6 21,907 8/29/2015
1.4.5 24,745 7/24/2015
1.4.4 769 7/23/2015
1.4.3 32,110 5/27/2015
1.4.2 10,057 5/6/2015
1.4.1 19,112 4/14/2015
1.3.4 46,394 2/4/2015
1.3.3 3,080 1/28/2015
1.3.2 1,104 1/27/2015
1.3.1 6,364 1/13/2015
1.3.0 5,134 12/10/2014
1.2.2 3,752 11/24/2014
1.2.1 606 11/22/2014
1.2.0 3,406 11/17/2014
1.1.1 42,175 9/5/2014
1.1.0 1,899 9/3/2014
1.0.2 4,573 7/1/2014
1.0.1 1,524 6/30/2014
1.0.0 557 6/30/2014
0.9.1 1,631 6/12/2014
0.9.0 510 6/7/2014
0.8.3 543 5/23/2014
0.8.2 401 5/21/2014
0.8.1 694 5/17/2014
0.8.0 1,350 5/2/2014
0.7.5 480 4/10/2014
0.7.4 380 4/7/2014
0.7.3 392 4/4/2014
0.7.1 399 4/1/2014
0.7.0 496 3/22/2014
0.6.2 393 1/28/2014
0.6.1 371 1/27/2014
0.5.2 427 11/19/2013
0.5.1 416 11/12/2013
0.5.0 904 11/10/2013