From 19e5b6e39db79249b4e77482ffeb6e9d7ad20689 Mon Sep 17 00:00:00 2001 From: Greg Yo Date: Fri, 10 Oct 2025 15:49:34 +1300 Subject: [PATCH] Updated servicebus dependencies Update Nunit adapter Allowed servicebus to support websockets as a switch --- .../AzureCommandBusReceiver.cs | 5 +++-- .../Cqrs.Azure.ServiceBus/AzureServiceBus.cs | 22 +++++++++++++++++-- .../Cqrs.Azure.ServiceBus.csproj | 2 +- ...rs.Azure.KeyVault.Tests.Integration.csproj | 2 +- ....Azure.ServiceBus.Tests.Integration.csproj | 6 ++--- .../Cqrs.Azure.ServiceBus.Tests.Unit.csproj | 2 +- ...Cqrs.Azure.Storage.Test.Integration.csproj | 2 +- .../Cqrs.MongoDB.Tests.Integration.csproj | 2 +- 8 files changed, 31 insertions(+), 12 deletions(-) diff --git a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs index 3795b21b7..0bc284483 100644 --- a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs +++ b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureCommandBusReceiver.cs @@ -22,6 +22,7 @@ #if NETSTANDARD2_0 || NET48_OR_GREATER using Azure.Messaging.ServiceBus; +using Azure.Messaging.ServiceBus.Administration; using System.Reflection; using BrokeredMessage = Azure.Messaging.ServiceBus.ServiceBusReceivedMessage; using IMessageReceiver = Azure.Messaging.ServiceBus.ServiceBusProcessor; @@ -243,7 +244,7 @@ await base.InstantiateReceivingAsync #if NETSTANDARD2_0 || NET48_OR_GREATER IEnumerable rules = await ruleManager .GetRulesAsync() - .Where(r => r.Name == "CqrsConfiguredFilter" || r.Name == "$Default") + .Where(r => r.Name == "CqrsConfiguredFilter" || r.Name == RuleProperties.DefaultRuleName) .ToListAsync(); #else IEnumerable rules = manager.GetRules(client.TopicPath, client.Name).ToList(); @@ -282,7 +283,7 @@ await base.InstantiateReceivingAsync else if (string.IsNullOrWhiteSpace(filter) && !rules.Any()) { #if NETSTANDARD2_0 || NET48_OR_GREATER - await ruleManager.CreateRuleAsync("$Default", new SqlFilter("1=1")); + await ruleManager.CreateRuleAsync(RuleProperties.DefaultRuleName, new SqlFilter("1=1")); #else ruleDescription = new RuleDescription ( diff --git a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureServiceBus.cs b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureServiceBus.cs index e2d1b29af..30e05b1fa 100644 --- a/Framework/Azure/Cqrs.Azure.ServiceBus/AzureServiceBus.cs +++ b/Framework/Azure/Cqrs.Azure.ServiceBus/AzureServiceBus.cs @@ -224,6 +224,11 @@ public abstract class AzureServiceBus /// protected short TimeoutOnSendRetryMaximumCount { get; private set; } + /// + /// Use WebSockets rather than AMQP on port 5671 + /// + protected bool UseWebSockets { get; private set; } + /// /// The to use to sign messages. /// @@ -265,6 +270,11 @@ protected AzureServiceBus(IConfigurationManager configurationManager, IMessageSe if (ConfigurationManager.TryGetSetting("Cqrs.Azure.Servicebus.TimeoutOnSendRetryMaximumCount", out timeoutOnSendRetryMaximumCountValue) && !string.IsNullOrWhiteSpace(timeoutOnSendRetryMaximumCountValue) && short.TryParse(timeoutOnSendRetryMaximumCountValue, out timeoutOnSendRetryMaximumCount)) TimeoutOnSendRetryMaximumCount = timeoutOnSendRetryMaximumCount; + if (ConfigurationManager.TryGetSetting("Cqrs.Azure.Servicebus.UseWebSockets", out bool useWebSockets)) + UseWebSockets = useWebSockets; + else + UseWebSockets = false; + ExclusionNamespaces = new SynchronizedCollection { "Cqrs", "System" }; TaskRelatedMethodNames = new List { @@ -326,13 +336,21 @@ protected virtual async Task GetOrCreateClientAsync() { string connectionString = ConnectionString; AzureBusRbacSettings rbacSettings = RbacConnectionSettings; + var clientOptions = new ServiceBusClientOptions + { + TransportType = UseWebSockets + ? ServiceBusTransportType.AmqpWebSockets + : ServiceBusTransportType.AmqpTcp, + Identifier = Logger.LoggerSettings.ModuleName + }; + if (!string.IsNullOrWhiteSpace(connectionString)) - ServiceBusClient = new ServiceBusClient(connectionString, new ServiceBusClientOptions { Identifier = Logger.LoggerSettings.ModuleName }); + ServiceBusClient = new ServiceBusClient(connectionString, clientOptions); else { var credentials = new ClientSecretCredential(rbacSettings.TenantId, rbacSettings.ApplicationId, rbacSettings.ClientKey); - ServiceBusClient = new ServiceBusClient(rbacSettings.Endpoint, credentials); + ServiceBusClient = new ServiceBusClient(rbacSettings.Endpoint, credentials, clientOptions); } } } diff --git a/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj b/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj index 9ff33d2e1..6076a5715 100644 --- a/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj +++ b/Framework/Azure/Cqrs.Azure.ServiceBus/Cqrs.Azure.ServiceBus.csproj @@ -70,7 +70,7 @@ - + diff --git a/Framework/Azure/Tests/Cqrs.Azure.KeyVault.Tests.Integration/Cqrs.Azure.KeyVault.Tests.Integration.csproj b/Framework/Azure/Tests/Cqrs.Azure.KeyVault.Tests.Integration/Cqrs.Azure.KeyVault.Tests.Integration.csproj index a39b1d2a8..ce9ada5db 100644 --- a/Framework/Azure/Tests/Cqrs.Azure.KeyVault.Tests.Integration/Cqrs.Azure.KeyVault.Tests.Integration.csproj +++ b/Framework/Azure/Tests/Cqrs.Azure.KeyVault.Tests.Integration/Cqrs.Azure.KeyVault.Tests.Integration.csproj @@ -8,7 +8,7 @@ - + diff --git a/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Integration/Cqrs.Azure.ServiceBus.Tests.Integration.csproj b/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Integration/Cqrs.Azure.ServiceBus.Tests.Integration.csproj index 7bd3d3e2c..06c2cf7b1 100644 --- a/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Integration/Cqrs.Azure.ServiceBus.Tests.Integration.csproj +++ b/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Integration/Cqrs.Azure.ServiceBus.Tests.Integration.csproj @@ -36,8 +36,8 @@ - - + + @@ -52,7 +52,7 @@ - + diff --git a/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Unit/Cqrs.Azure.ServiceBus.Tests.Unit.csproj b/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Unit/Cqrs.Azure.ServiceBus.Tests.Unit.csproj index 2ee215797..93f9b0e22 100644 --- a/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Unit/Cqrs.Azure.ServiceBus.Tests.Unit.csproj +++ b/Framework/Azure/Tests/Cqrs.Azure.ServiceBus.Tests.Unit/Cqrs.Azure.ServiceBus.Tests.Unit.csproj @@ -33,7 +33,7 @@ - + diff --git a/Framework/Azure/Tests/Cqrs.Azure.Storage.Test.Integration/Cqrs.Azure.Storage.Test.Integration.csproj b/Framework/Azure/Tests/Cqrs.Azure.Storage.Test.Integration/Cqrs.Azure.Storage.Test.Integration.csproj index f7ab93211..0f8a7cd7b 100644 --- a/Framework/Azure/Tests/Cqrs.Azure.Storage.Test.Integration/Cqrs.Azure.Storage.Test.Integration.csproj +++ b/Framework/Azure/Tests/Cqrs.Azure.Storage.Test.Integration/Cqrs.Azure.Storage.Test.Integration.csproj @@ -20,7 +20,7 @@ - + diff --git a/Framework/Cqrs.MongoDB.Tests.Integration/Cqrs.MongoDB.Tests.Integration.csproj b/Framework/Cqrs.MongoDB.Tests.Integration/Cqrs.MongoDB.Tests.Integration.csproj index 010f0c9d5..5d8402263 100644 --- a/Framework/Cqrs.MongoDB.Tests.Integration/Cqrs.MongoDB.Tests.Integration.csproj +++ b/Framework/Cqrs.MongoDB.Tests.Integration/Cqrs.MongoDB.Tests.Integration.csproj @@ -27,7 +27,7 @@ - +