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);
});