using Events.FilesAPI.Features.Certificates; using Events.FilesAPI.Features.RegistrationsExcel; using MassTransit; using Microsoft.Extensions.Options; namespace Events.FilesAPI.Infrastructure.Messaging; public static class MassTransitSetupExtensions { public static void SetupMassTransit(this IServiceCollection services, IConfiguration configuration) { services.AddOptions() .Bind(configuration.GetSection("RabbitMq")) .ValidateDataAnnotations() .Validate( settings => Uri.TryCreate(settings.Host, UriKind.Absolute, out var uri) && uri.Scheme == "rabbitmq" && !string.IsNullOrWhiteSpace(uri.Host), "RabbitMq:Host must be a valid absolute rabbitmq:// URI.") .ValidateOnStart(); services.AddMassTransit(x => { x.AddConsumer(); x.AddConsumer(); x.UsingRabbitMq((context, cfg) => { var settings = context.GetRequiredService>().Value; cfg.Host(new Uri(settings.Host), h => { h.Username(settings.Username); h.Password(settings.Password); }); cfg.ReceiveEndpoint("events-filesapi-registration-changes", e => { e.ConfigureConsumer(context); e.ConfigureConsumer(context); }); }); }); } }