Expose Azure Service Bus Client factories

This commit is contained in:
Sipke Schoorstra 2023-10-22 20:01:15 +02:00
parent 1cbbc920b7
commit b60e55f91b

View file

@ -35,6 +35,16 @@ public class AzureServiceBusFeature : FeatureBase
/// </summary>
public Action<AzureServiceBusOptions> AzureServiceBusOptions { get; set; } = _ => { };
/// <summary>
/// A delegate to create a <see cref="ServiceBusAdministrationClient"/> instance.
/// </summary>
public Func<IServiceProvider, ServiceBusClient> ServiceBusClientFactory { get; set; } = sp => new(GetConnectionString(sp));
/// <summary>
/// A delegate to create a <see cref="ServiceBusAdministrationClient"/> instance.
/// </summary>
public Func<IServiceProvider, ServiceBusAdministrationClient> ServiceBusAdministrationClientFactory { get; set; } = sp => new(GetConnectionString(sp));
/// <inheritdoc />
public override void ConfigureHostedServices()
{
@ -57,8 +67,8 @@ public class AzureServiceBusFeature : FeatureBase
Services.Configure(AzureServiceBusOptions);
Services
.AddSingleton(CreateServiceBusManagementClient)
.AddSingleton(CreateServiceBusClient)
.AddSingleton(ServiceBusAdministrationClientFactory)
.AddSingleton(ServiceBusClientFactory)
.AddSingleton<ConfigurationQueueTopicAndSubscriptionProvider>()
.AddSingleton<IWorkerManager, WorkerManager>()
.AddTransient<IServiceBusInitializer, ServiceBusInitializer>();
@ -72,9 +82,6 @@ public class AzureServiceBusFeature : FeatureBase
// Handlers.
Services.AddHandlersFrom<UpdateWorkers>();
}
private static ServiceBusClient CreateServiceBusClient(IServiceProvider serviceProvider) => new(GetConnectionString(serviceProvider));
private static ServiceBusAdministrationClient CreateServiceBusManagementClient(IServiceProvider serviceProvider) => new(GetConnectionString(serviceProvider));
private static string GetConnectionString(IServiceProvider serviceProvider)
{