46 lines
1.5 KiB
C#
46 lines
1.5 KiB
C#
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<RabbitMqSettings>()
|
|
.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<CertificateRegistrationEventsConsumer>();
|
|
x.AddConsumer<RegistrationsExcelEventsConsumer>();
|
|
|
|
x.UsingRabbitMq((context, cfg) =>
|
|
{
|
|
var settings = context.GetRequiredService<IOptions<RabbitMqSettings>>().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<CertificateRegistrationEventsConsumer>(context);
|
|
e.ConfigureConsumer<RegistrationsExcelEventsConsumer>(context);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
}
|