diff --git a/src/servicebus/Elsa.Rebus.AzureServiceBus/Extensions/ElsaOptionsExtensions.cs b/src/servicebus/Elsa.Rebus.AzureServiceBus/Extensions/ElsaOptionsExtensions.cs index 3f72db5b4..c2e356c17 100644 --- a/src/servicebus/Elsa.Rebus.AzureServiceBus/Extensions/ElsaOptionsExtensions.cs +++ b/src/servicebus/Elsa.Rebus.AzureServiceBus/Extensions/ElsaOptionsExtensions.cs @@ -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 configureTransport) => + elsaOptions.UseServiceBus(context => ConfigureAzureServiceBusEndpoint(elsaOptions, context, connectionString, default, configureTransport)); + + public static ElsaOptions UseAzureServiceBus(this ElsaOptions elsaOptions, string connectionString, ITokenProvider tokenProvider, Action configureTransport) => + elsaOptions.UseServiceBus(context => ConfigureAzureServiceBusEndpoint(elsaOptions, context, connectionString, tokenProvider, configureTransport)); + + private static void ConfigureAzureServiceBusEndpoint( + ElsaOptions elsaOptions, + ServiceBusEndpointConfigurationContext context, + string connectionString, + ITokenProvider? tokenProvider, + Action? configureTransport) { var queueName = context.QueueName; var loggerFactory = context.ServiceProvider.GetRequiredService(); 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)); }