using MassTransit; using Musify.Infrastructure.MassTransit.Consumers; namespace Musify.Infrastructure.MassTransit { public static partial class MassTransitDependencyInjection { static void ConfigureConsumerEndpoint( IRabbitMqBusFactoryConfigurator busFactoryConfigurator, IBusRegistrationContext busRegistrationContext, string queueName) where TConsumer : class, IConsumer { busFactoryConfigurator.ReceiveEndpoint(queueName, endpointConfigurator => endpointConfigurator.ConfigureConsumer(busRegistrationContext)); } static void ConfigureExecuteActivityEndpoint( IRabbitMqBusFactoryConfigurator busFactoryConfigurator, IBusRegistrationContext busRegistrationContext, string endpointName) where TActivity : class, IExecuteActivity where TArguments : class { busFactoryConfigurator.ReceiveEndpoint(MassTransitEndpointNames.ExecuteQueue(endpointName), endpointConfigurator => { endpointConfigurator.ExecuteActivityHost(busRegistrationContext); }); } static void ConfigureActivityEndpoint( IRabbitMqBusFactoryConfigurator busFactoryConfigurator, IBusRegistrationContext busRegistrationContext, string endpointName) where TActivity : class, IActivity where TArguments : class where TLog : class { busFactoryConfigurator.ReceiveEndpoint(MassTransitEndpointNames.ExecuteQueue(endpointName), endpointConfigurator => endpointConfigurator.ExecuteActivityHost( EndpointHelper.BuildCompensateActivityUri(endpointName), busRegistrationContext) ); busFactoryConfigurator.ReceiveEndpoint(MassTransitEndpointNames.CompensateQueue(endpointName), endpointConfigurator => endpointConfigurator.CompensateActivityHost(busRegistrationContext) ); } } }