Hangfire.Correlate
2.2.0
dotnet add package Hangfire.Correlate --version 2.2.0
NuGet\Install-Package Hangfire.Correlate -Version 2.2.0
<PackageReference Include="Hangfire.Correlate" Version="2.2.0" />
paket add Hangfire.Correlate --version 2.2.0
#r "nuget: Hangfire.Correlate, 2.2.0"
// Install Hangfire.Correlate as a Cake Addin #addin nuget:?package=Hangfire.Correlate&version=2.2.0 // Install Hangfire.Correlate as a Cake Tool #tool nuget:?package=Hangfire.Correlate&version=2.2.0
Hangfire integration of Correlate to add correlation id support to Hangfire background/scheduled jobs.
Registration example
Configure Hangfire to use Correlate.
Using a IServiceProvider
Use the configuration extension with IServiceProvider
to configure Hangfire with Correlate.
Add package dependencies:
services
.AddLogging(logging => logging.AddConsole())
.AddCorrelate()
.AddHangfire((serviceProvider, config) => config
.UseCorrelate(serviceProvider)
.(...)
);
Using built-in configuration extensions
Use the Hangfire built-in configuration extensions to enable Correlate.
This is no longer the recommended approach and will most likely be removed in a future version.
ILoggerFactory loggerFactory = new LoggerFactory();
loggerFactory.AddConsole();
GlobalConfiguration.Configuration
.UseCorrelate(loggerFactory)
.(...);
Enqueue jobs
This example illustrates how jobs that are enqueued, inherit the Correlation ID from the ambient correlation context if inside one.
public class MyService
{
private IAsyncCorrelationManager _correlationManager;
private IBackgroundJobClient _client;
public MyService(IAsyncCorrelationManager correlationManager, IBackgroundJobClient client)
{
_correlationManager = _correlationManager;
_client = client;
}
public async Task DoWork()
{
// Without ambient correlation context, the job id will be used.
_client.Enqueue(() => Thread.Sleep(1000));
// Perform work in new correlation context.
string parentJobId = await _correlationManager.CorrelateAsync(async () =>
{
// This job be executed with the Correlation ID from
// the ambient correlation context which is automatically
// generated.
_client.Enqueue(() => Thread.Sleep(1000));
// Do stuff.
await ..
// This job will be also be executed with the same Correlation ID.
return _client.Enqueue<MyJob>(myJob => myJob.CallApiAsync());
});
// This job will be also be executed with the same Correlation ID
// as which MyJob.CallApiAsync() was executed, even though it is
// outside the ambient correlation context, because it is a
// continuation and we used its job id to enqueue it.
_client.ContinueJobWith(parentJobId, () => Thread.Sleep(1000));
}
}
Note: when using Correlate integration for ASP.NET Core, each request is already scoped to a correlation context, and so there is no need to wrap the enqueueing of jobs with
IAsyncCorrelationManager
/ICorrelationManager
.
More info
See Correlate documentation for further integration with ASP.NET Core, IHttpClientFactory
and for other extensions/libraries.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Correlate (>= 5.3.0)
- Hangfire.Core (>= 1.7.37)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Hangfire.Correlate:
Package | Downloads |
---|---|
Hangfire.AspNetCore.Plus
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Release notes are at https://github.com/skwasjer/Hangfire.Correlate