diff --git a/src/apps/Elsa.Server.Web/Program.cs b/src/apps/Elsa.Server.Web/Program.cs index 32fdbfc5c..4ad055918 100644 --- a/src/apps/Elsa.Server.Web/Program.cs +++ b/src/apps/Elsa.Server.Web/Program.cs @@ -481,7 +481,7 @@ services if (massTransitBroker == MassTransitBroker.AzureServiceBus) { - massTransit.UseAzureServiceBus(azureServiceBusConnectionString, serviceBusFeature => serviceBusFeature.ConfigureServiceBus = bus => + massTransit.UseAzureServiceBus(azureServiceBusConnectionString, serviceBusFeature => serviceBusFeature.ConfigureTransportBus = (context, bus) => { bus.PrefetchCount = 50; bus.LockDuration = TimeSpan.FromMinutes(5); @@ -493,7 +493,7 @@ services if (massTransitBroker == MassTransitBroker.RabbitMq) { - massTransit.UseRabbitMq(rabbitMqConnectionString, rabbit => rabbit.ConfigureServiceBus = bus => + massTransit.UseRabbitMq(rabbitMqConnectionString, rabbit => rabbit.ConfigureTransportBus = (context, bus) => { bus.PrefetchCount = 50; bus.Durable = true; diff --git a/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs b/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs index 581e603a0..7fd01c438 100644 --- a/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs +++ b/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs @@ -53,8 +53,20 @@ public class AzureServiceBusFeature : FeatureBase /// /// A delegate that configures the Azure Service Bus transport options. /// + /// This method is being marked as obsolete in favor of the ConfigureTransportBus which will provide additional access to the + [Obsolete("Use ConfigureTransportBus instead which provides a reference to IBusRegistrationContext.")] public Action? ConfigureServiceBus { get; set; } + /// + /// Configures the Azure Service Bus within MassTransit for additional transport level components or features. + /// This action provides access to the and . + /// + /// + /// Use this action to configure advanced settings and features for the Azure Service Bus, such as middleware + /// or additional endpoints. This action will run in addition to the Elsa required configuration. + /// + public Action ConfigureTransportBus { get; set; } + /// /// A delegate to configure . /// @@ -104,6 +116,7 @@ public class AzureServiceBusFeature : FeatureBase configurator.UseServiceBusMessageScheduler(); ConfigureServiceBus?.Invoke(configurator); + ConfigureTransportBus?.Invoke(context, configurator); var instanceNameProvider = context.GetRequiredService(); foreach (var consumer in temporaryConsumers) diff --git a/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs b/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs index 5b886a70e..bdcd01d8b 100644 --- a/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs +++ b/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs @@ -39,8 +39,20 @@ public class RabbitMqServiceBusFeature : FeatureBase /// /// Configures the RabbitMQ bus. /// + /// This method is being marked as obsolete in favor of the ConfigureTransportBus which will provide additional access to the + [Obsolete("Use ConfigureTransportBus instead which provides a reference to IBusRegistrationContext.")] public Action? ConfigureServiceBus { get; set; } + /// + /// Configures the RabbitMQ bus within MassTransit for additional transport level components or features. + /// This action provides access to the and . + /// + /// + /// Use this action to configure advanced settings and features for the RabbitMQ bus, such as middleware + /// or additional endpoints. This action will run in addition to the Elsa required configuration. + /// + public Action ConfigureTransportBus { get; set; } + /// public override void Configure() { @@ -69,6 +81,7 @@ public class RabbitMqServiceBusFeature : FeatureBase configurator.ConcurrentMessageLimit = options.ConcurrentMessageLimit; ConfigureServiceBus?.Invoke(configurator); + ConfigureTransportBus?.Invoke(context, configurator); foreach (var consumer in temporaryConsumers) { diff --git a/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs b/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs index 47f21ea67..66780b0e0 100644 --- a/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs +++ b/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs @@ -89,6 +89,7 @@ public class MassTransitFeature : FeatureBase /// /// Adds MassTransit to the service container and registers all collected assemblies for discovery of consumers. /// + /// The bus configurator used to configure the MassTransit Bus. private void AddMassTransit(Action busConfigurator) { // For each message type, create a concrete WorkflowMessageConsumer. @@ -119,6 +120,10 @@ public class MassTransitFeature : FeatureBase }); } + /// + /// Configures MassTransit to use the in-memory transport when no other transport has been configured. + /// + /// reference to the MassTransit bus to configure for and in-memory transport private void ConfigureInMemoryTransport(IBusRegistrationConfigurator configure) { var consumers = this.GetConsumers().ToList(); @@ -131,6 +136,7 @@ public class MassTransitFeature : FeatureBase configure.UsingInMemory((context, bus) => { var options = context.GetRequiredService>().Value; + var busOptions = context.GetRequiredService>().Value; foreach (var consumer in temporaryConsumers) { @@ -156,7 +162,7 @@ public class MassTransitFeature : FeatureBase return serializerOptions; }); - if (PrefetchCount != null) bus.PrefetchCount = PrefetchCount.Value; + if (busOptions.PrefetchCount.HasValue) bus.PrefetchCount = busOptions.PrefetchCount.Value; bus.ConfigureTenantMiddleware(context); });