54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
using MassTransit;
|
|
using Mccn.Common.Application.EventBus;
|
|
using Mccn.Common.Infrastructure.Authentication;
|
|
using Mccn.Common.Infrastructure.Caching;
|
|
using Mccn.Common.Infrastructure.EventBus;
|
|
using Mccn.Common.Infrastructure.ExceptionHandlers;
|
|
using Mccn.Common.Infrastructure.Observability;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Quartz;
|
|
|
|
namespace Mccn.Common.Infrastructure;
|
|
|
|
public static class DependencyInjection
|
|
{
|
|
public static IServiceCollection AddInfrastructure(
|
|
this IServiceCollection services,
|
|
IConfiguration configuration,
|
|
params Action<IRegistrationConfigurator>[] moduleConsumers)
|
|
{
|
|
services.AddJwtAuthentication(configuration);
|
|
|
|
services.AddAuthorization();
|
|
|
|
services.AddCaching(configuration);
|
|
|
|
services.AddObservability("Mccn", configuration);
|
|
|
|
services.AddExceptionHandler<GlobalExceptionHandler>();
|
|
services.AddProblemDetails();
|
|
|
|
services.AddHttpContextAccessor();
|
|
|
|
services.AddMassTransit(configure =>
|
|
{
|
|
foreach (Action<IRegistrationConfigurator> configureConsumers in moduleConsumers)
|
|
configureConsumers(configure);
|
|
|
|
configure.SetKebabCaseEndpointNameFormatter();
|
|
configure.UsingRabbitMq((context, cfg) =>
|
|
{
|
|
cfg.Host(configuration.GetConnectionString("MessageBroker"));
|
|
cfg.ConfigureEndpoints(context);
|
|
});
|
|
});
|
|
|
|
services.AddScoped<IEventBus, EventBus.EventBus>();
|
|
|
|
services.AddQuartz();
|
|
services.AddQuartzHostedService(options => options.WaitForJobsToComplete = true);
|
|
|
|
return services;
|
|
}
|
|
} |