From 1bd8c8779dbcac37f451cc6f4174b697e0e04685 Mon Sep 17 00:00:00 2001 From: XShine555 Date: Fri, 20 Mar 2026 21:45:36 +0100 Subject: [PATCH] Config --- .../ConfigurationDependencyInjection.cs | 3 +- .../Configuration/MessagingConfiguration.cs | 18 +++++++++ .../InfrastructureDependencyInjection.cs | 4 +- ...ion.cs => MessagingDependencyInjection.cs} | 39 ++++++++----------- 4 files changed, 39 insertions(+), 25 deletions(-) create mode 100644 Infrastructure/Configuration/MessagingConfiguration.cs rename Infrastructure/Messaging/{MassTransitDependencyInjection.cs => MessagingDependencyInjection.cs} (72%) diff --git a/Infrastructure/Configuration/ConfigurationDependencyInjection.cs b/Infrastructure/Configuration/ConfigurationDependencyInjection.cs index 6a6ccde..0310508 100644 --- a/Infrastructure/Configuration/ConfigurationDependencyInjection.cs +++ b/Infrastructure/Configuration/ConfigurationDependencyInjection.cs @@ -11,7 +11,8 @@ namespace Musify.Infrastructure.Configuration serviceDescriptors .AddValidatedConfiguration(configuration, DatabaseConfiguration.SectionName) .AddValidatedConfiguration(configuration, KeycloakConfiguration.SectionName) - .AddValidatedConfiguration(configuration, InfrastructureStorageConfiguration.SectionName); + .AddValidatedConfiguration(configuration, InfrastructureStorageConfiguration.SectionName) + .AddValidatedConfiguration(configuration, MessagingConfiguration.SectionName); return serviceDescriptors; } diff --git a/Infrastructure/Configuration/MessagingConfiguration.cs b/Infrastructure/Configuration/MessagingConfiguration.cs new file mode 100644 index 0000000..045ea0c --- /dev/null +++ b/Infrastructure/Configuration/MessagingConfiguration.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace Musify.Infrastructure.Configuration +{ + public class MessagingConfiguration + { + public const string SectionName = "Messaging"; + + [Required] + public required string Host { get; set; } + + [Required] + public required string Username { get; set; } + + [Required] + public required string Password { get; set; } + } +} diff --git a/Infrastructure/InfrastructureDependencyInjection.cs b/Infrastructure/InfrastructureDependencyInjection.cs index 6588275..64e7474 100644 --- a/Infrastructure/InfrastructureDependencyInjection.cs +++ b/Infrastructure/InfrastructureDependencyInjection.cs @@ -20,7 +20,7 @@ namespace Musify.Infrastructure .AddKeycloakService(configuration) .AddStorageHandler() .AddPictureHandler() - .AddMassTransitClient(configuration) + .AddMassTransitClient() .AddScoped() .AddScoped(); @@ -34,7 +34,7 @@ namespace Musify.Infrastructure .AddDatabase(configuration) .AddStorageHandler() .AddPictureHandler() - .AddMassTransitConsumers(configuration) + .AddMassTransitConsumers() .AddScoped() .AddScoped(); diff --git a/Infrastructure/Messaging/MassTransitDependencyInjection.cs b/Infrastructure/Messaging/MessagingDependencyInjection.cs similarity index 72% rename from Infrastructure/Messaging/MassTransitDependencyInjection.cs rename to Infrastructure/Messaging/MessagingDependencyInjection.cs index ae5a99b..0613f72 100644 --- a/Infrastructure/Messaging/MassTransitDependencyInjection.cs +++ b/Infrastructure/Messaging/MessagingDependencyInjection.cs @@ -1,6 +1,6 @@ using MassTransit; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Musify.Infrastructure.Configuration; using Musify.Infrastructure.Messaging.Activities; using Musify.Infrastructure.Messaging.Activities.Arguments; using Musify.Infrastructure.Messaging.Consumers; @@ -8,20 +8,22 @@ using Musify.Infrastructure.Messaging.Filters; namespace Musify.Infrastructure.Messaging { - public static class MassTransitDependencyInjection + public static class MessagingDependencyInjection { - public static IServiceCollection AddMassTransitClient(this IServiceCollection serviceDescriptors, IConfiguration configuration) + public static IServiceCollection AddMassTransitClient(this IServiceCollection serviceDescriptors) { serviceDescriptors.AddMassTransit(options => { - options.UsingRabbitMq((_, busFactoryConfigurator) => - ConfigureRabbitMqHost(busFactoryConfigurator, configuration)); + options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) => + ConfigureRabbitMqHost( + busFactoryConfigurator, + busRegistrationContext.GetRequiredService())); } ); return serviceDescriptors; } - public static IServiceCollection AddMassTransitConsumers(this IServiceCollection serviceDescriptors, IConfiguration configuration) + public static IServiceCollection AddMassTransitConsumers(this IServiceCollection serviceDescriptors) { serviceDescriptors.AddMassTransit(options => { @@ -33,7 +35,9 @@ namespace Musify.Infrastructure.Messaging options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) => { - ConfigureRabbitMqHost(busFactoryConfigurator, configuration); + ConfigureRabbitMqHost( + busFactoryConfigurator, + busRegistrationContext.GetRequiredService()); busFactoryConfigurator.UseConsumeFilter(typeof(ProcessTrackingConsumeFilter<>), busRegistrationContext); @@ -67,23 +71,14 @@ namespace Musify.Infrastructure.Messaging return serviceDescriptors; } - static void ConfigureRabbitMqHost(IRabbitMqBusFactoryConfigurator busFactoryConfigurator, IConfiguration configuration) + static void ConfigureRabbitMqHost( + IRabbitMqBusFactoryConfigurator busFactoryConfigurator, + MessagingConfiguration massTransitConfiguration) { - var section = configuration.GetSection("MassTransit"); - - var host = section["Host"] - ?? throw new InvalidOperationException("MassTransit:Host configuration value not found."); - - var username = section["Username"] - ?? throw new InvalidOperationException("MassTransit:Username configuration value not found."); - - var password = section["Password"] - ?? throw new InvalidOperationException("MassTransit:Password configuration value not found."); - - busFactoryConfigurator.Host(host, options => + busFactoryConfigurator.Host(massTransitConfiguration.Host, options => { - options.Username(username); - options.Password(password); + options.Username(massTransitConfiguration.Username); + options.Password(massTransitConfiguration.Password); } ); }