Skip to content

Commit ff26f65

Browse files
committed
Disable queueing work if queue is disabled for RedisQueueProvider (PR danielgerlag#1154 )
1 parent db455b0 commit ff26f65

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/providers/WorkflowCore.Providers.Redis/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public static class ServiceCollectionExtensions
99
{
1010
public static WorkflowOptions UseRedisQueues(this WorkflowOptions options, string connectionString, string prefix)
1111
{
12-
options.UseQueueProvider(sp => new RedisQueueProvider(connectionString, prefix, sp.GetService<ILoggerFactory>()));
12+
options.UseQueueProvider(sp => new RedisQueueProvider(connectionString, prefix, sp.GetService<WorkflowOptions>(), sp.GetService<ILoggerFactory>()));
1313
return options;
1414
}
1515

src/providers/WorkflowCore.Providers.Redis/Services/RedisQueueProvider.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.Extensions.Logging;
66
using StackExchange.Redis;
77
using WorkflowCore.Interface;
8+
using WorkflowCore.Models;
89

910
namespace WorkflowCore.Providers.Redis.Services
1011
{
@@ -24,15 +25,25 @@ public class RedisQueueProvider : IQueueProvider
2425
[QueueType.Index] = "index"
2526
};
2627

27-
public RedisQueueProvider(string connectionString, string prefix, ILoggerFactory logFactory)
28+
private readonly Dictionary<QueueType, bool> _enabledQueues = new Dictionary<QueueType, bool>();
29+
30+
public RedisQueueProvider(string connectionString, string prefix, WorkflowOptions options, ILoggerFactory logFactory)
2831
{
2932
_connectionString = connectionString;
3033
_prefix = prefix;
34+
_enabledQueues[QueueType.Index] = options.EnableIndexes;
35+
_enabledQueues[QueueType.Event] = options.EnableEvents;
36+
_enabledQueues[QueueType.Workflow] = options.EnableWorkflows;
3137
_logger = logFactory.CreateLogger(GetType());
3238
}
3339

3440
public async Task QueueWork(string id, QueueType queue)
3541
{
42+
if (!_enabledQueues[queue])
43+
{
44+
return;
45+
}
46+
3647
if (_redis == null)
3748
throw new InvalidOperationException();
3849

@@ -47,6 +58,11 @@ public async Task QueueWork(string id, QueueType queue)
4758

4859
public async Task<string> DequeueWork(QueueType queue, CancellationToken cancellationToken)
4960
{
61+
if (!_enabledQueues[queue])
62+
{
63+
return null;
64+
}
65+
5066
if (_redis == null)
5167
throw new InvalidOperationException();
5268

0 commit comments

Comments
 (0)