using Elsa.Features.Services; using Elsa.MassTransit.Features; using Elsa.MassTransit.Options; using Elsa.MassTransit.RabbitMq.Features; using Elsa.MassTransit.RabbitMq.Options; // ReSharper disable once CheckNamespace namespace Elsa.Extensions; /// /// Provides extensions to that enables and configures MassTransit and the RabbitMQ transport. /// public static class ModuleExtensions { /// /// Enable and configure the RabbitMQ transport for MassTransit. /// public static MassTransitFeature UseRabbitMq(this MassTransitFeature feature, string connectionString) => feature.UseRabbitMq(new Uri(connectionString), null); /// /// Enable and configure the RabbitMQ transport for MassTransit. /// public static MassTransitFeature UseRabbitMq(this MassTransitFeature feature, Uri connectionString) => feature.UseRabbitMq(connectionString, null); /// /// Enable and configure the RabbitMQ transport for MassTransit. /// public static MassTransitFeature UseRabbitMq(this MassTransitFeature feature, RabbitMqOptions options) => feature.UseRabbitMq(null, options); /// /// Enable and configure the RabbitMQ transport for MassTransit. /// private static MassTransitFeature UseRabbitMq(this MassTransitFeature feature, Uri? connectionString, RabbitMqOptions? options) { feature.Module.Configure((Action) Configure); return feature; void Configure(RabbitMqServiceBusFeature bus) { bus.ConnectionString = connectionString; bus.Options = options; } } }