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