diff --git a/src/common/Elsa.Features/Implementations/Module.cs b/src/common/Elsa.Features/Implementations/Module.cs index 9f13efc07..1728843cc 100644 --- a/src/common/Elsa.Features/Implementations/Module.cs +++ b/src/common/Elsa.Features/Implementations/Module.cs @@ -34,6 +34,18 @@ public class Module : IModule /// public IDictionary Properties { get; } = new Dictionary(); + /// + public bool HasFeature() where T : class, IFeature + { + return HasFeature(typeof(T)); + } + + /// + public bool HasFeature(Type featureType) + { + return _features.ContainsKey(featureType); + } + /// public T Configure(Action? configure = default) where T : class, IFeature => Configure(module => (T)Activator.CreateInstance(typeof(T), module)!, configure); diff --git a/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs b/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs index 12d38d83a..bb0e6eaad 100644 --- a/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs +++ b/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs @@ -76,7 +76,10 @@ public class RabbitMqServiceBusFeature : FeatureBase }); } - configurator.SetupWorkflowDispatcherEndpoints(context); + // Only configure the dispatcher endpoints if the Masstransit Workflow Dispatcher feature is enabled. + if (Module.HasFeature()) + configurator.SetupWorkflowDispatcherEndpoints(context); + configurator.ConfigureEndpoints(context, new KebabCaseEndpointNameFormatter("Elsa", false)); }); }; diff --git a/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs b/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs index 4cb6ddd76..8648f0153 100644 --- a/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs +++ b/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs @@ -5,7 +5,9 @@ using Elsa.Extensions; using Elsa.Features.Abstractions; using Elsa.Features.Services; using Elsa.MassTransit.Consumers; +using Elsa.MassTransit.Contracts; using Elsa.MassTransit.Extensions; +using Elsa.MassTransit.Formatters; using Elsa.MassTransit.Models; using Elsa.MassTransit.Options; using Elsa.MassTransit.Services; @@ -37,6 +39,11 @@ public class MassTransitFeature : FeatureBase /// A delegate that can be set to configure MassTransit's . Used by transport-level features such as AzureServiceBusFeature and RabbitMqServiceBusFeature. /// public Action? BusConfigurator { get; set; } + + /// + /// A factory that creates a . + /// + public Func ChannelQueueFormatterFactory { get; set; } = _ => new DefaultEndpointChannelFormatter(); /// public override void Configure() @@ -48,6 +55,7 @@ public class MassTransitFeature : FeatureBase { var messageTypes = this.GetMessages(); + Services.AddSingleton(ChannelQueueFormatterFactory); Services.Configure(x => { }); Services.AddActivityProvider(); _runInMemory = BusConfigurator is null; diff --git a/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs b/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs index 1e39520ee..032dbdc23 100644 --- a/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs +++ b/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs @@ -4,8 +4,6 @@ using Elsa.Features.Attributes; using Elsa.Features.Services; using Elsa.MassTransit.ConsumerDefinitions; using Elsa.MassTransit.Consumers; -using Elsa.MassTransit.Contracts; -using Elsa.MassTransit.Formatters; using Elsa.MassTransit.Options; using Elsa.MassTransit.Services; using Elsa.Workflows.Runtime.Contracts; @@ -31,11 +29,7 @@ public class MassTransitWorkflowDispatcherFeature : FeatureBase /// Configures the MassTransit workflow dispatcher. /// public Action? ConfigureDispatcherOptions { get; set; } - - /// - /// A factory that creates a . - /// - public Func ChannelQueueFormatterFactory { get; set; } = _ => new DefaultEndpointChannelFormatter(); + /// public override void Configure() @@ -62,7 +56,6 @@ public class MassTransitWorkflowDispatcherFeature : FeatureBase if (ConfigureDispatcherOptions != null) options.Configure(ConfigureDispatcherOptions); - Services.AddSingleton(ChannelQueueFormatterFactory); Services.AddScoped(); } } \ No newline at end of file