using Elsa.Features.Abstractions; using Elsa.Features.Attributes; using Elsa.Features.Services; using Elsa.MassTransit.Options; using MassTransit; namespace Elsa.MassTransit.Features; /// /// Configures MassTransit to use the RabbitMQ broker. /// [DependsOn(typeof(MassTransitFeature))] public class RabbitMqServiceBusFeature : FeatureBase { /// public RabbitMqServiceBusFeature(IModule module) : base(module) { } /// /// A RabbitMQ connection string. /// public Uri? ConnectionString { get; set; } /// /// RabbitMQ options. /// public RabbitMqOptions? Options { get; set; } /// public override void Configure() { Module.Configure().BusConfigurator = configure => { configure.UsingRabbitMq((context, configurator) => { if (ConnectionString != null) { configurator.Host(ConnectionString); } else if (Options != null) { configurator.Host(Options.Host, h => { h.Username(Options.Username); h.Password(Options.Password); }); } configurator.ConfigureEndpoints(context, new KebabCaseEndpointNameFormatter("Elsa", false)); }); }; } }