diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusConsumer.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusConsumer.cs
index ebff0345a9..c0d94aee62 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusConsumer.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusConsumer.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using Azure.Messaging.ServiceBus;
using Microsoft.Extensions.Logging;
using Paramore.Brighter.Logging;
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/IServiceBusSenderWrapper.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/IServiceBusSenderWrapper.cs
index 161b4882a4..4cb4352e40 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/IServiceBusSenderWrapper.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/IServiceBusSenderWrapper.cs
@@ -10,23 +10,6 @@ namespace Paramore.Brighter.MessagingGateway.AzureServiceBus.AzureServiceBusWrap
///
public interface IServiceBusSenderWrapper
{
- ///
- /// Send a Message
- ///
- /// The message to send.
- void Send(ServiceBusMessage message);
-
- ///
- /// Schedule a message to be sent.
- ///
- /// Message to be scheduled.
- /// The time to scheduled the message.
- void ScheduleMessage(ServiceBusMessage message, DateTimeOffset scheduleEnqueueTime);
-
- ///
- /// Close the Connection.
- ///
- void Close();
///
/// Send a Message
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/ServiceBusSenderWrapper.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/ServiceBusSenderWrapper.cs
index db247d31b2..1c433785bf 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/ServiceBusSenderWrapper.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/AzureServiceBusWrappers/ServiceBusSenderWrapper.cs
@@ -15,22 +15,6 @@ internal ServiceBusSenderWrapper(ServiceBusSender serviceBusSender)
_serviceBusSender = serviceBusSender;
}
- public void Send(ServiceBusMessage message)
- {
- //Azure Service Bus only supports IsolationLevel.Serializable if in a transaction
- if (Transaction.Current != null && Transaction.Current.IsolationLevel != IsolationLevel.Serializable)
- {
- using (new TransactionScope(TransactionScopeOption.Suppress))
- {
- _serviceBusSender.SendMessageAsync(message).Wait();
- }
- }
- else
- {
- _serviceBusSender.SendMessageAsync(message).Wait();
- }
- }
-
public async Task SendAsync(ServiceBusMessage message,
CancellationToken cancellationToken = default)
{
@@ -53,22 +37,12 @@ public Task SendAsync(ServiceBusMessage[] messages, CancellationToken cancellati
return _serviceBusSender.SendMessagesAsync(messages, cancellationToken);
}
- public void ScheduleMessage(ServiceBusMessage message, DateTimeOffset scheduleEnqueueTime)
- {
- _serviceBusSender.ScheduleMessageAsync(message, scheduleEnqueueTime).Wait();
- }
-
public async Task ScheduleMessageAsync(ServiceBusMessage message, DateTimeOffset scheduleEnqueueTime,
CancellationToken cancellationToken = default)
{
await _serviceBusSender.ScheduleMessageAsync(message, scheduleEnqueueTime, cancellationToken);
}
- public void Close()
- {
- _serviceBusSender.CloseAsync().Wait();
- }
-
public Task CloseAsync()
{
return _serviceBusSender.CloseAsync();
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusChainedClientProvider.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusChainedClientProvider.cs
index cff93b27a3..99549ea5f4 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusChainedClientProvider.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusChainedClientProvider.cs
@@ -6,11 +6,10 @@
namespace Paramore.Brighter.MessagingGateway.AzureServiceBus.ClientProvider
{
- public class ServiceBusChainedClientProvider : IServiceBusClientProvider
+ public class ServiceBusChainedClientProvider : ServiceBusClientProvider
{
- private readonly string _fullyQualifiedNameSpace;
-
- private readonly ChainedTokenCredential _tokenCredential;
+ protected override ServiceBusClient Client { get; }
+ protected override ServiceBusAdministrationClient AdminClient { get; }
///
/// Initializes an implementation is using Default Azure Credentials for Authentication.
@@ -31,26 +30,9 @@ public ServiceBusChainedClientProvider(string fullyQualifiedNameSpace, params To
"Credential Sources is null or empty, ensure this is set in the constructor.");
}
- _tokenCredential = new ChainedTokenCredential(credentialSources);
- _fullyQualifiedNameSpace = fullyQualifiedNameSpace;
- }
-
- ///
- /// Provides an Azure Service Bus Client
- ///
- /// Azure Service Bus Client
- public ServiceBusClient GetServiceBusClient()
- {
- return new ServiceBusClient(_fullyQualifiedNameSpace, _tokenCredential);
- }
-
- ///
- /// Provides an Azure Service Bus Administration Client
- ///
- /// Azure Service Bus Administration Client
- public ServiceBusAdministrationClient GetServiceBusAdministrationClient()
- {
- return new ServiceBusAdministrationClient(_fullyQualifiedNameSpace, _tokenCredential);
+ Client = new ServiceBusClient(fullyQualifiedNameSpace, new ChainedTokenCredential(credentialSources));
+ AdminClient = new ServiceBusAdministrationClient(fullyQualifiedNameSpace,
+ new ChainedTokenCredential(credentialSources));
}
}
}
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusClientProvider.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusClientProvider.cs
new file mode 100644
index 0000000000..049075bf69
--- /dev/null
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusClientProvider.cs
@@ -0,0 +1,23 @@
+using Azure.Messaging.ServiceBus;
+using Azure.Messaging.ServiceBus.Administration;
+
+namespace Paramore.Brighter.MessagingGateway.AzureServiceBus.ClientProvider
+{
+ public abstract class ServiceBusClientProvider : IServiceBusClientProvider
+ {
+ protected abstract ServiceBusClient Client { get; }
+ protected abstract ServiceBusAdministrationClient AdminClient { get; }
+
+ ///
+ /// Provides an Azure Service Bus Client
+ ///
+ /// Azure Service Bus Client
+ public ServiceBusClient GetServiceBusClient() => Client;
+
+ ///
+ /// Provides an Azure Service Bus Administration Client
+ ///
+ /// Azure Service Bus Administration Client
+ public ServiceBusAdministrationClient GetServiceBusAdministrationClient() => AdminClient;
+ }
+}
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusConnectionStringClientProvider.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusConnectionStringClientProvider.cs
index cb5e5cad10..fd6cb40ddf 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusConnectionStringClientProvider.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusConnectionStringClientProvider.cs
@@ -7,9 +7,10 @@ namespace Paramore.Brighter.MessagingGateway.AzureServiceBus.ClientProvider
///
/// Provides Azure Service Bus Clients using a Connection String.
///
- public class ServiceBusConnectionStringClientProvider : IServiceBusClientProvider
+ public class ServiceBusConnectionStringClientProvider : ServiceBusClientProvider
{
- private readonly string _connectionString;
+ protected override ServiceBusClient Client { get; }
+ protected override ServiceBusAdministrationClient AdminClient { get; }
///
/// Initializes an implementation is using a connection string.
@@ -24,24 +25,8 @@ public ServiceBusConnectionStringClientProvider(string connectionString)
"Configuration is null, ensure this is set in the constructor.");
}
- _connectionString = connectionString;
- }
-
- ///
- /// Provides an Azure Service Bus Client
- ///
- /// Azure Service Bus Client
- public ServiceBusClient GetServiceBusClient()
- {
- return new ServiceBusClient(_connectionString);
- }
- ///
- /// Provides an Azure Service Bus Administration Client
- ///
- /// Azure Service Bus Administration Client
- public ServiceBusAdministrationClient GetServiceBusAdministrationClient()
- {
- return new ServiceBusAdministrationClient(_connectionString);
+ Client = new ServiceBusClient(connectionString);
+ AdminClient = new ServiceBusAdministrationClient(connectionString);
}
}
}
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusDefaultAzureClientProvider.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusDefaultAzureClientProvider.cs
index 517d46e561..159a31627e 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusDefaultAzureClientProvider.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusDefaultAzureClientProvider.cs
@@ -8,9 +8,10 @@ namespace Paramore.Brighter.MessagingGateway.AzureServiceBus.ClientProvider
///
/// Provides Azure Service Bus Clients using Default Azure Credentials.
///
- public class ServiceBusDefaultAzureClientProvider : IServiceBusClientProvider
+ public class ServiceBusDefaultAzureClientProvider : ServiceBusClientProvider
{
- private readonly string _fullyQualifiedNameSpace;
+ protected override ServiceBusClient Client { get; }
+ protected override ServiceBusAdministrationClient AdminClient { get; }
///
/// Initializes an implementation is using Default Azure Credentials for Authentication.
@@ -25,25 +26,9 @@ public ServiceBusDefaultAzureClientProvider(string fullyQualifiedNameSpace)
"Fully qualified Namespace is null or empty, ensure this is set in the constructor.");
}
- _fullyQualifiedNameSpace = fullyQualifiedNameSpace;
- }
-
- ///
- /// Provides an Azure Service Bus Client
- ///
- /// Azure Service Bus Client
- public ServiceBusClient GetServiceBusClient()
- {
- return new ServiceBusClient(_fullyQualifiedNameSpace, new DefaultAzureCredential());
- }
-
- ///
- /// Provides an Azure Service Bus Administration Client
- ///
- /// Azure Service Bus Administration Client
- public ServiceBusAdministrationClient GetServiceBusAdministrationClient()
- {
- return new ServiceBusAdministrationClient(_fullyQualifiedNameSpace, new DefaultAzureCredential());
+ Client = new ServiceBusClient(fullyQualifiedNameSpace, new DefaultAzureCredential());
+ AdminClient = new ServiceBusAdministrationClient(fullyQualifiedNameSpace,
+ new DefaultAzureCredential());
}
}
}
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusManagedIdentityClientProvider.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusManagedIdentityClientProvider.cs
index 4c82e0c104..a0b06c0a9f 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusManagedIdentityClientProvider.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusManagedIdentityClientProvider.cs
@@ -8,9 +8,10 @@ namespace Paramore.Brighter.MessagingGateway.AzureServiceBus.ClientProvider
///
/// Provides Azure Service Bus Clients using Managed Identity Credentials.
///
- public class ServiceBusManagedIdentityClientProvider : IServiceBusClientProvider
+ public class ServiceBusManagedIdentityClientProvider : ServiceBusClientProvider
{
- private readonly string _fullyQualifiedNameSpace;
+ protected override ServiceBusClient Client { get; }
+ protected override ServiceBusAdministrationClient AdminClient { get; }
///
/// Initializes an implementation is using Managed Identity for Authentication.
@@ -24,26 +25,10 @@ public ServiceBusManagedIdentityClientProvider(string fullyQualifiedNameSpace)
throw new ArgumentNullException(nameof(fullyQualifiedNameSpace),
"Fully qualified Namespace is null or empty, ensure this is set in the constructor.");
}
-
- _fullyQualifiedNameSpace = fullyQualifiedNameSpace;
- }
-
- ///
- /// Provides an Azure Service Bus Client
- ///
- /// Azure Service Bus Client
- public ServiceBusClient GetServiceBusClient()
- {
- return new ServiceBusClient(_fullyQualifiedNameSpace, new ManagedIdentityCredential());
- }
-
- ///
- /// Provides an Azure Service Bus Administration Client
- ///
- /// Azure Service Bus Administration Client
- public ServiceBusAdministrationClient GetServiceBusAdministrationClient()
- {
- return new ServiceBusAdministrationClient(_fullyQualifiedNameSpace, new ManagedIdentityCredential());
+
+ Client = new ServiceBusClient(fullyQualifiedNameSpace, new ManagedIdentityCredential());
+ AdminClient = new ServiceBusAdministrationClient(fullyQualifiedNameSpace,
+ new ManagedIdentityCredential());
}
}
}
diff --git a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusVisualStudioCredentialClientProvider.cs b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusVisualStudioCredentialClientProvider.cs
index 1018233cd1..21790632c9 100644
--- a/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusVisualStudioCredentialClientProvider.cs
+++ b/src/Paramore.Brighter.MessagingGateway.AzureServiceBus/ClientProvider/ServiceBusVisualStudioCredentialClientProvider.cs
@@ -8,9 +8,10 @@ namespace Paramore.Brighter.MessagingGateway.AzureServiceBus.ClientProvider
///
/// Provides Azure Service Bus Clients using Visual Studio Credentials.
///
- public class ServiceBusVisualStudioCredentialClientProvider: IServiceBusClientProvider
+ public class ServiceBusVisualStudioCredentialClientProvider: ServiceBusClientProvider
{
- private readonly string _fullyQualifiedNameSpace;
+ protected override ServiceBusClient Client { get; }
+ protected override ServiceBusAdministrationClient AdminClient { get; }
///
/// Initializes an implementation is using Visual Studio Credentials for Authentication.
@@ -25,25 +26,9 @@ public ServiceBusVisualStudioCredentialClientProvider(string fullyQualifiedNameS
"Fully qualified Namespace is null or empty, ensure this is set in the constructor.");
}
- _fullyQualifiedNameSpace = fullyQualifiedNameSpace;
- }
-
- ///
- /// Provides an Azure Service Bus Client
- ///
- /// Azure Service Bus Client
- public ServiceBusClient GetServiceBusClient()
- {
- return new ServiceBusClient(_fullyQualifiedNameSpace, new VisualStudioCredential());
- }
-
- ///
- /// Provides an Azure Service Bus Administration Client
- ///
- /// Azure Service Bus Administration Client
- public ServiceBusAdministrationClient GetServiceBusAdministrationClient()
- {
- return new ServiceBusAdministrationClient(_fullyQualifiedNameSpace, new VisualStudioCredential());
+ Client = new ServiceBusClient(fullyQualifiedNameSpace, new VisualStudioCredential());
+ AdminClient = new ServiceBusAdministrationClient(fullyQualifiedNameSpace,
+ new VisualStudioCredential());
}
}
}
diff --git a/tests/Paramore.Brighter.AzureServiceBus.Tests/AzureServiceBusChannelFactoryTests.cs b/tests/Paramore.Brighter.AzureServiceBus.Tests/AzureServiceBusChannelFactoryTests.cs
index f04635136a..dc523631f3 100644
--- a/tests/Paramore.Brighter.AzureServiceBus.Tests/AzureServiceBusChannelFactoryTests.cs
+++ b/tests/Paramore.Brighter.AzureServiceBus.Tests/AzureServiceBusChannelFactoryTests.cs
@@ -10,7 +10,7 @@ public class AzureServiceBusChannelFactoryTests
[Fact]
public void When_the_timeout_is_below_400_ms_it_should_throw_an_exception()
{
- var factory = new AzureServiceBusChannelFactory(new AzureServiceBusConsumerFactory(new AzureServiceBusConfiguration("someString")));
+ var factory = new AzureServiceBusChannelFactory(new AzureServiceBusConsumerFactory(new AzureServiceBusConfiguration("Endpoint=sb://namespacename.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=yZOy10HAJTNkyaKOqwjSricOEud7QLK7R62KyVfjCt4=")));
var subscription = new AzureServiceBusSubscription(typeof(object), new SubscriptionName("name"), new ChannelName("name"), new RoutingKey("name"),
1, 1, timeoutInMilliseconds: 399);