From 2013a94c0adb5b76a982deefba4ffd2de140eee2 Mon Sep 17 00:00:00 2001 From: David Cobbold Date: Mon, 7 Jun 2021 14:25:45 +0100 Subject: [PATCH 1/5] Add support for using a custom hangfire queue name --- .../EventFlowOptionsHangfireExtensions.cs | 9 +++++ .../Integration/EventFlowHangfireOptions.cs | 24 ++++++++++++ .../Integration/HangfireJobRunner.cs | 9 ++++- .../Integration/HangfireJobScheduler.cs | 17 +++++---- .../Integration/IEventFlowHangfireOptions.cs | 13 +++++++ .../Integration/IHangfireJobRunner.cs | 3 ++ .../Integration/IQueueNameProvider.cs | 13 +++++++ .../Integration/QueueNameProvider.cs | 18 +++++++++ .../UseQueueFromParameterAttribute.cs | 38 +++++++++++++++++++ 9 files changed, 135 insertions(+), 9 deletions(-) create mode 100644 Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs create mode 100644 Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs create mode 100644 Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs create mode 100644 Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs create mode 100644 Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs diff --git a/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs b/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs index ecba471d2..2b25fe3c1 100644 --- a/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs +++ b/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs @@ -48,5 +48,14 @@ public static IEventFlowOptions UseHangfireJobScheduler( sr.Register(r => new BackgroundJobClient()); }); } + + public static IEventFlowOptions UseHangfireJobScheduler( + this IEventFlowOptions eventFlowOptions, + Action configurationAction) + { + var options = eventFlowOptions.UseHangfireJobScheduler(); + configurationAction(new EventFlowHangfireOptions(options)); + return options; + } } } \ No newline at end of file diff --git a/Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs b/Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs new file mode 100644 index 000000000..f67a825f2 --- /dev/null +++ b/Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EventFlow.Hangfire.Integration +{ + internal class EventFlowHangfireOptions : IEventFlowHangfireOptions + { + private readonly IEventFlowOptions _eventFlowOptions; + + public EventFlowHangfireOptions(IEventFlowOptions eventFlowOptions) + { + _eventFlowOptions = eventFlowOptions; + } + + public IEventFlowHangfireOptions UseQueueName(string queueName) + { + _eventFlowOptions.RegisterServices(sr => sr.Register(r => new QueueNameProvider(queueName))); + return this; + } + } +} diff --git a/Source/EventFlow.Hangfire/Integration/HangfireJobRunner.cs b/Source/EventFlow.Hangfire/Integration/HangfireJobRunner.cs index 86a918143..8133fb98a 100644 --- a/Source/EventFlow.Hangfire/Integration/HangfireJobRunner.cs +++ b/Source/EventFlow.Hangfire/Integration/HangfireJobRunner.cs @@ -35,11 +35,16 @@ public HangfireJobRunner( IJobRunner jobRunner) { _jobRunner = jobRunner; + } + + public Task ExecuteAsync(string displayName, string jobName, int version, string job) + { + return _jobRunner.ExecuteAsync(jobName, version, job, CancellationToken.None); } - public Task ExecuteAsync(string displayName, string jobName, int version, string job) + public Task ExecuteAsync(string displayName, string jobName, int version, string job, string queueName) { return _jobRunner.ExecuteAsync(jobName, version, job, CancellationToken.None); - } + } } } \ No newline at end of file diff --git a/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs b/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs index 77e69bae1..b6cfbcae4 100644 --- a/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs +++ b/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs @@ -34,23 +34,26 @@ namespace EventFlow.Hangfire.Integration public class HangfireJobScheduler : IJobScheduler { private readonly IBackgroundJobClient _backgroundJobClient; - private readonly IJobDefinitionService _jobDefinitionService; + private readonly IJobDefinitionService _jobDefinitionService; private readonly IJsonSerializer _jsonSerializer; private readonly ILog _log; - private readonly IJobDisplayNameBuilder _jobDisplayNameBuilder; + private readonly IJobDisplayNameBuilder _jobDisplayNameBuilder; + private readonly string _queueName; public HangfireJobScheduler( ILog log, IJobDisplayNameBuilder jobDisplayNameBuilder, IJsonSerializer jsonSerializer, IBackgroundJobClient backgroundJobClient, - IJobDefinitionService jobDefinitionService) + IJobDefinitionService jobDefinitionService, + IQueueNameProvider queueNameProvider = null) { _log = log; _jobDisplayNameBuilder = jobDisplayNameBuilder; _jsonSerializer = jsonSerializer; _backgroundJobClient = backgroundJobClient; - _jobDefinitionService = jobDefinitionService; + _jobDefinitionService = jobDefinitionService; + _queueName = queueNameProvider?.QueueName; } public Task ScheduleNowAsync(IJob job, CancellationToken cancellationToken) @@ -58,7 +61,7 @@ public Task ScheduleNowAsync(IJob job, CancellationToken cancellationTok return ScheduleAsync( job, cancellationToken, - (c, d, n, j) => _backgroundJobClient.Enqueue(r => r.ExecuteAsync(n, d.Name, d.Version, j))); + (c, d, n, j) => _backgroundJobClient.Enqueue(r => r.ExecuteAsync(n, d.Name, d.Version, j, _queueName))); } public Task ScheduleAsync(IJob job, DateTimeOffset runAt, CancellationToken cancellationToken) @@ -66,7 +69,7 @@ public Task ScheduleAsync(IJob job, DateTimeOffset runAt, CancellationTo return ScheduleAsync( job, cancellationToken, - (c, d, n, j) => _backgroundJobClient.Schedule(r => r.ExecuteAsync(n, d.Name, d.Version, j), runAt)); + (c, d, n, j) => _backgroundJobClient.Schedule(r => r.ExecuteAsync(n, d.Name, d.Version, j, _queueName), runAt)); } public Task ScheduleAsync(IJob job, TimeSpan delay, CancellationToken cancellationToken) @@ -74,7 +77,7 @@ public Task ScheduleAsync(IJob job, TimeSpan delay, CancellationToken ca return ScheduleAsync( job, cancellationToken, - (c, d, n, j) => _backgroundJobClient.Schedule(r => r.ExecuteAsync(n, d.Name, d.Version, j), delay)); + (c, d, n, j) => _backgroundJobClient.Schedule(r => r.ExecuteAsync(n, d.Name, d.Version, j, _queueName), delay)); } private async Task ScheduleAsync( diff --git a/Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs b/Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs new file mode 100644 index 000000000..d539f84dd --- /dev/null +++ b/Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EventFlow.Hangfire.Integration +{ + public interface IEventFlowHangfireOptions + { + IEventFlowHangfireOptions UseQueueName(string queueName); + } +} diff --git a/Source/EventFlow.Hangfire/Integration/IHangfireJobRunner.cs b/Source/EventFlow.Hangfire/Integration/IHangfireJobRunner.cs index 17b22d910..2196b5271 100644 --- a/Source/EventFlow.Hangfire/Integration/IHangfireJobRunner.cs +++ b/Source/EventFlow.Hangfire/Integration/IHangfireJobRunner.cs @@ -30,5 +30,8 @@ public interface IHangfireJobRunner { [DisplayName("{0}")] Task ExecuteAsync(string displayName, string jobName, int version, string job); + + [DisplayName("{0}"), UseQueueFromParameter(4)] + Task ExecuteAsync(string displayName, string jobName, int version, string job, string queueName); } } \ No newline at end of file diff --git a/Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs b/Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs new file mode 100644 index 000000000..414bb31db --- /dev/null +++ b/Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EventFlow.Hangfire.Integration +{ + public interface IQueueNameProvider + { + string QueueName { get; } + } +} diff --git a/Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs b/Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs new file mode 100644 index 000000000..042e79cdc --- /dev/null +++ b/Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EventFlow.Hangfire.Integration +{ + internal class QueueNameProvider : IQueueNameProvider + { + public string QueueName { get; } + + public QueueNameProvider(string queueName) + { + QueueName = queueName; + } + } +} diff --git a/Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs b/Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs new file mode 100644 index 000000000..7ba8dab39 --- /dev/null +++ b/Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs @@ -0,0 +1,38 @@ +using Hangfire.Common; +using Hangfire.States; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EventFlow.Hangfire.Integration +{ + internal class UseQueueFromParameterAttribute : JobFilterAttribute, IElectStateFilter + { + public UseQueueFromParameterAttribute(int parameterIndex) + { + if (parameterIndex < 0) + throw new InvalidOperationException("Invalid queue name parameter index"); + + ParameterIndex = parameterIndex; + } + + public int ParameterIndex { get; } + + public void OnStateElection(ElectStateContext context) + { + var enqueuedState = context.CandidateState as EnqueuedState; + if (enqueuedState != null) + { + if (ParameterIndex >= context.BackgroundJob.Job.Args.Count) + throw new InvalidOperationException("Invalid queue name parameter index"); + + var queueName = context.BackgroundJob.Job.Args[ParameterIndex] as string; + + if (queueName != null) + enqueuedState.Queue = queueName; + } + } + } +} From e4ae9ce6836fb22d3ac6cfc35b87df3f28db1a94 Mon Sep 17 00:00:00 2001 From: David Cobbold Date: Mon, 14 Jun 2021 09:30:07 +0100 Subject: [PATCH 2/5] Add license headers --- .../Integration/EventFlowHangfireOptions.cs | 25 ++++++++++++++++++- .../Integration/IEventFlowHangfireOptions.cs | 25 ++++++++++++++++++- .../Integration/IQueueNameProvider.cs | 25 ++++++++++++++++++- .../Integration/QueueNameProvider.cs | 25 ++++++++++++++++++- .../UseQueueFromParameterAttribute.cs | 25 ++++++++++++++++++- 5 files changed, 120 insertions(+), 5 deletions(-) diff --git a/Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs b/Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs index f67a825f2..41436b61e 100644 --- a/Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs +++ b/Source/EventFlow.Hangfire/Integration/EventFlowHangfireOptions.cs @@ -1,4 +1,27 @@ -using System; +// The MIT License (MIT) +// +// Copyright (c) 2015-2021 Rasmus Mikkelsen +// Copyright (c) 2015-2021 eBay Software Foundation +// https://github.com/eventflow/EventFlow +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs b/Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs index d539f84dd..fbc18971b 100644 --- a/Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs +++ b/Source/EventFlow.Hangfire/Integration/IEventFlowHangfireOptions.cs @@ -1,4 +1,27 @@ -using System; +// The MIT License (MIT) +// +// Copyright (c) 2015-2021 Rasmus Mikkelsen +// Copyright (c) 2015-2021 eBay Software Foundation +// https://github.com/eventflow/EventFlow +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs b/Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs index 414bb31db..e9b71e6c6 100644 --- a/Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs +++ b/Source/EventFlow.Hangfire/Integration/IQueueNameProvider.cs @@ -1,4 +1,27 @@ -using System; +// The MIT License (MIT) +// +// Copyright (c) 2015-2021 Rasmus Mikkelsen +// Copyright (c) 2015-2021 eBay Software Foundation +// https://github.com/eventflow/EventFlow +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs b/Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs index 042e79cdc..b77c84ea0 100644 --- a/Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs +++ b/Source/EventFlow.Hangfire/Integration/QueueNameProvider.cs @@ -1,4 +1,27 @@ -using System; +// The MIT License (MIT) +// +// Copyright (c) 2015-2021 Rasmus Mikkelsen +// Copyright (c) 2015-2021 eBay Software Foundation +// https://github.com/eventflow/EventFlow +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs b/Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs index 7ba8dab39..e5148f646 100644 --- a/Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs +++ b/Source/EventFlow.Hangfire/Integration/UseQueueFromParameterAttribute.cs @@ -1,4 +1,27 @@ -using Hangfire.Common; +// The MIT License (MIT) +// +// Copyright (c) 2015-2021 Rasmus Mikkelsen +// Copyright (c) 2015-2021 eBay Software Foundation +// https://github.com/eventflow/EventFlow +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +using Hangfire.Common; using Hangfire.States; using System; using System.Collections.Generic; From 0f907f66c52d9f1c420870c6a4a537110edcbbf1 Mon Sep 17 00:00:00 2001 From: David Cobbold Date: Mon, 14 Jun 2021 10:25:27 +0100 Subject: [PATCH 3/5] Register default value for IQueueNameProvider --- .../Extensions/EventFlowOptionsHangfireExtensions.cs | 1 + Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs b/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs index 5909738b3..722358189 100644 --- a/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs +++ b/Source/EventFlow.Hangfire/Extensions/EventFlowOptionsHangfireExtensions.cs @@ -46,6 +46,7 @@ public static IEventFlowOptions UseHangfireJobScheduler( sr.Register(); sr.Register(); sr.Register(r => new BackgroundJobClient()); + sr.Register(r => new QueueNameProvider(null)); }); } diff --git a/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs b/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs index 7b7d14b06..665e220ef 100644 --- a/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs +++ b/Source/EventFlow.Hangfire/Integration/HangfireJobScheduler.cs @@ -46,14 +46,14 @@ public HangfireJobScheduler( IJsonSerializer jsonSerializer, IBackgroundJobClient backgroundJobClient, IJobDefinitionService jobDefinitionService, - IQueueNameProvider queueNameProvider = null) + IQueueNameProvider queueNameProvider) { _log = log; _jobDisplayNameBuilder = jobDisplayNameBuilder; _jsonSerializer = jsonSerializer; _backgroundJobClient = backgroundJobClient; _jobDefinitionService = jobDefinitionService; - _queueName = queueNameProvider?.QueueName; + _queueName = queueNameProvider.QueueName; } public Task ScheduleNowAsync(IJob job, CancellationToken cancellationToken) From d7fac9a808993958ebbd1c6c0497b52ebc59eda1 Mon Sep 17 00:00:00 2001 From: David Cobbold Date: Fri, 27 Aug 2021 08:54:25 +0100 Subject: [PATCH 4/5] Add release notes for hangfire queue name change --- RELEASE_NOTES.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index f3be87178..5d067333e 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,4 +1,11 @@ -### New in 0.82 (not released yet) +### New in 0.83 (not released yet) + +* New: Queue name used by HangfireJobScheduler can be overridden: + ```csharp + eventFlowOptions.UseHangfireJobScheduler(o => o.UseQueueName("myqueue")) + ``` + +### New in 0.82.4659 (released 2021-06-17) * Fix: Source IDs are now added to snapshots * Fix: InMemoryReadStore will not break on unmodified update result From 069eb8f758357761e63e3b20b0bb9e129dfac369 Mon Sep 17 00:00:00 2001 From: David Cobbold Date: Fri, 27 Aug 2021 09:16:29 +0100 Subject: [PATCH 5/5] Update version to 0.83 --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index f9cf897d5..4740ff4b1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,7 +3,7 @@ init: - ps: '[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")' - ps: Restart-Service docker -version: 0.82.{build} +version: 0.83.{build} skip_tags: true