Expose Azure Service Bus transport settings

This commit is contained in:
Sipke Schoorstra 2021-01-25 12:45:35 +01:00
parent a5c6824023
commit e0238982c3

View file

@ -10,19 +10,35 @@ namespace Elsa.Rebus.AzureServiceBus
{
public static class ElsaOptionsExtensions
{
public static ElsaOptions UseAzureServiceBus(this ElsaOptions elsaOptions, string connectionString, ITokenProvider? tokenProvider = default)
{
return elsaOptions.UseServiceBus(context => ConfigureAzureServiceBusEndpoint(elsaOptions, context, connectionString, tokenProvider));
}
public static ElsaOptions UseAzureServiceBus(this ElsaOptions elsaOptions, string connectionString) =>
elsaOptions.UseServiceBus(context => ConfigureAzureServiceBusEndpoint(elsaOptions, context, connectionString, default, default));
private static void ConfigureAzureServiceBusEndpoint(ElsaOptions elsaOptions, ServiceBusEndpointConfigurationContext context, string connectionString, ITokenProvider? tokenProvider)
public static ElsaOptions UseAzureServiceBus(this ElsaOptions elsaOptions, string connectionString, ITokenProvider tokenProvider) =>
elsaOptions.UseServiceBus(context => ConfigureAzureServiceBusEndpoint(elsaOptions, context, connectionString, tokenProvider, default));
public static ElsaOptions UseAzureServiceBus(this ElsaOptions elsaOptions, string connectionString, Action<AzureServiceBusTransportSettings> configureTransport) =>
elsaOptions.UseServiceBus(context => ConfigureAzureServiceBusEndpoint(elsaOptions, context, connectionString, default, configureTransport));
public static ElsaOptions UseAzureServiceBus(this ElsaOptions elsaOptions, string connectionString, ITokenProvider tokenProvider, Action<AzureServiceBusTransportSettings> configureTransport) =>
elsaOptions.UseServiceBus(context => ConfigureAzureServiceBusEndpoint(elsaOptions, context, connectionString, tokenProvider, configureTransport));
private static void ConfigureAzureServiceBusEndpoint(
ElsaOptions elsaOptions,
ServiceBusEndpointConfigurationContext context,
string connectionString,
ITokenProvider? tokenProvider,
Action<AzureServiceBusTransportSettings>? configureTransport)
{
var queueName = context.QueueName;
var loggerFactory = context.ServiceProvider.GetRequiredService<ILoggerFactory>();
context.Configurer
.Logging(l => l.MicrosoftExtensionsLogging(loggerFactory))
.Transport(t => t.UseAzureServiceBus(connectionString, queueName, tokenProvider).SetMessagePeekLockDuration(TimeSpan.FromMinutes(5)).AutomaticallyRenewPeekLock())
.Transport(t =>
{
var transport = t.UseAzureServiceBus(connectionString, queueName, tokenProvider);
configureTransport?.Invoke(transport);
})
.Routing(r => r.TypeBased().Map(context.MessageTypeMap))
.Options(o => o.Apply(elsaOptions.ServiceBusOptions));
}