diff --git a/src/Equinor.ProCoSys.PcsBus/Equinor.ProCoSys.PcsServiceBus.csproj b/src/Equinor.ProCoSys.PcsBus/Equinor.ProCoSys.PcsServiceBus.csproj index ff1c824..6b41db0 100644 --- a/src/Equinor.ProCoSys.PcsBus/Equinor.ProCoSys.PcsServiceBus.csproj +++ b/src/Equinor.ProCoSys.PcsBus/Equinor.ProCoSys.PcsServiceBus.csproj @@ -1,7 +1,7 @@  - 4.3.38 + 4.3.39 net8.0 enable 1e187122-6237-4849-9cc4-ed8fc1688809 diff --git a/src/Equinor.ProCoSys.PcsBus/IServiceCollectionExtensions.cs b/src/Equinor.ProCoSys.PcsBus/IServiceCollectionExtensions.cs index 8eb49de..8174ce3 100644 --- a/src/Equinor.ProCoSys.PcsBus/IServiceCollectionExtensions.cs +++ b/src/Equinor.ProCoSys.PcsBus/IServiceCollectionExtensions.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Net.Http; +using Azure.Core; using Azure.Messaging.ServiceBus; using Equinor.ProCoSys.PcsServiceBus.Receiver; using Equinor.ProCoSys.PcsServiceBus.Receiver.Interfaces; @@ -34,19 +36,41 @@ public static IServiceCollection AddPcsServiceBusIntegration(this IServiceCollec return services; } - public static void AddTopicClients(this IServiceCollection services, string serviceBusConnectionString, - List topics) + public static void AddTopicClients( + this IServiceCollection services, + string serviceBusConnectionString, + IList topics) { - var pcsBusSender = new PcsBusSender(); var options = new ServiceBusClientOptions { EnableCrossEntityTransactions = true }; var client = new ServiceBusClient(serviceBusConnectionString, options); - foreach (var topicName in topics) + + AddTopicClients(services, topics, client); + } + + public static void AddTopicClients( + this IServiceCollection services, + IList topics, + string fullyQualifiedNamespace, + TokenCredential tokenCredential) + { + var options = new ServiceBusClientOptions { EnableCrossEntityTransactions = true }; + var client = new ServiceBusClient(fullyQualifiedNamespace, tokenCredential, options); + + AddTopicClients(services, topics, client); + } + + private static void AddTopicClients( + IServiceCollection services, + IList topics, + ServiceBusClient client) + { + var pcsBusSender = new PcsBusSender(); + + var sanitizedTopics = topics.Where(t => !string.IsNullOrWhiteSpace(t)).Distinct().ToList(); + foreach (var topicName in sanitizedTopics) { - if (!string.IsNullOrWhiteSpace(topicName)) - { - var serviceBusSender = client.CreateSender(topicName); - pcsBusSender.Add(topicName, serviceBusSender); - } + var serviceBusSender = client.CreateSender(topicName); + pcsBusSender.Add(topicName, serviceBusSender); } services.AddSingleton(pcsBusSender);