Skip to content

Commit 4a40066

Browse files
Improved AzureServiceBusScheduledCommandService with ConcurrentDictionary
1 parent fbad959 commit 4a40066

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/extensions/azureServiceBus/Wemogy.CQRS.Extensions.AzureServiceBus/Services/AzureServiceBusScheduledCommandService.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using System;
2-
using System.Collections.Generic;
2+
using System.Collections.Concurrent;
33
using System.Threading.Tasks;
44
using Azure.Messaging.ServiceBus;
55
using Wemogy.Core.Errors;
@@ -16,23 +16,21 @@ public class AzureServiceBusScheduledCommandService : IScheduledCommandService
1616
private const string ImmediateMessageJobId = "IMMEDIATE_MESSAGE";
1717
private readonly ServiceBusClient _serviceBusClient;
1818
private readonly AzureServiceBusSetupEnvironment _azureServiceBusSetupEnvironment;
19-
private readonly Dictionary<string, ServiceBusSender> _serviceBusSenders;
19+
private readonly ConcurrentDictionary<string, ServiceBusSender> _serviceBusSenders;
2020

2121
public AzureServiceBusScheduledCommandService(ServiceBusClient serviceBusClient, AzureServiceBusSetupEnvironment azureServiceBusSetupEnvironment)
2222
{
2323
_serviceBusClient = serviceBusClient;
2424
_azureServiceBusSetupEnvironment = azureServiceBusSetupEnvironment;
25-
_serviceBusSenders = new Dictionary<string, ServiceBusSender>();
25+
_serviceBusSenders = new ConcurrentDictionary<string, ServiceBusSender>();
2626
}
2727

2828
private ServiceBusSender GetServiceBusSender<TCommand>()
2929
{
3030
var queueOrTopicName = _azureServiceBusSetupEnvironment.GetQueueName<TCommand>();
31-
if (!_serviceBusSenders.TryGetValue(queueOrTopicName, out var serviceBusSender))
32-
{
33-
serviceBusSender = _serviceBusClient.CreateSender(queueOrTopicName);
34-
_serviceBusSenders.TryAdd(queueOrTopicName, serviceBusSender);
35-
}
31+
var serviceBusSender = _serviceBusSenders.GetOrAdd(
32+
queueOrTopicName,
33+
_ => _serviceBusClient.CreateSender(queueOrTopicName));
3634

3735
return serviceBusSender;
3836
}

0 commit comments

Comments
 (0)