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