This commit is contained in:
2026-03-20 21:45:36 +01:00
parent 4a17b21f19
commit 3c09bb89dd
4 changed files with 39 additions and 25 deletions
@@ -11,7 +11,8 @@ namespace Musify.Infrastructure.Configuration
serviceDescriptors serviceDescriptors
.AddValidatedConfiguration<DatabaseConfiguration>(configuration, DatabaseConfiguration.SectionName) .AddValidatedConfiguration<DatabaseConfiguration>(configuration, DatabaseConfiguration.SectionName)
.AddValidatedConfiguration<KeycloakConfiguration>(configuration, KeycloakConfiguration.SectionName) .AddValidatedConfiguration<KeycloakConfiguration>(configuration, KeycloakConfiguration.SectionName)
.AddValidatedConfiguration<InfrastructureStorageConfiguration>(configuration, InfrastructureStorageConfiguration.SectionName); .AddValidatedConfiguration<InfrastructureStorageConfiguration>(configuration, InfrastructureStorageConfiguration.SectionName)
.AddValidatedConfiguration<MessagingConfiguration>(configuration, MessagingConfiguration.SectionName);
return serviceDescriptors; return serviceDescriptors;
} }
@@ -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; }
}
}
@@ -20,7 +20,7 @@ namespace Musify.Infrastructure
.AddKeycloakService(configuration) .AddKeycloakService(configuration)
.AddStorageHandler() .AddStorageHandler()
.AddPictureHandler() .AddPictureHandler()
.AddMassTransitClient(configuration) .AddMassTransitClient()
.AddScoped<IEventBus, MassTransitEventBus>() .AddScoped<IEventBus, MassTransitEventBus>()
.AddScoped<IProcessTrackingStore, ProcessTrackingStore>(); .AddScoped<IProcessTrackingStore, ProcessTrackingStore>();
@@ -34,7 +34,7 @@ namespace Musify.Infrastructure
.AddDatabase(configuration) .AddDatabase(configuration)
.AddStorageHandler() .AddStorageHandler()
.AddPictureHandler() .AddPictureHandler()
.AddMassTransitConsumers(configuration) .AddMassTransitConsumers()
.AddScoped<IEventBus, MassTransitEventBus>() .AddScoped<IEventBus, MassTransitEventBus>()
.AddScoped<IProcessTrackingStore, ProcessTrackingStore>(); .AddScoped<IProcessTrackingStore, ProcessTrackingStore>();
@@ -1,6 +1,6 @@
using MassTransit; using MassTransit;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.Messaging.Activities; using Musify.Infrastructure.Messaging.Activities;
using Musify.Infrastructure.Messaging.Activities.Arguments; using Musify.Infrastructure.Messaging.Activities.Arguments;
using Musify.Infrastructure.Messaging.Consumers; using Musify.Infrastructure.Messaging.Consumers;
@@ -8,20 +8,22 @@ using Musify.Infrastructure.Messaging.Filters;
namespace Musify.Infrastructure.Messaging 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 => serviceDescriptors.AddMassTransit(options =>
{ {
options.UsingRabbitMq((_, busFactoryConfigurator) => options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) =>
ConfigureRabbitMqHost(busFactoryConfigurator, configuration)); ConfigureRabbitMqHost(
busFactoryConfigurator,
busRegistrationContext.GetRequiredService<MessagingConfiguration>()));
} ); } );
return serviceDescriptors; return serviceDescriptors;
} }
public static IServiceCollection AddMassTransitConsumers(this IServiceCollection serviceDescriptors, IConfiguration configuration) public static IServiceCollection AddMassTransitConsumers(this IServiceCollection serviceDescriptors)
{ {
serviceDescriptors.AddMassTransit(options => serviceDescriptors.AddMassTransit(options =>
{ {
@@ -33,7 +35,9 @@ namespace Musify.Infrastructure.Messaging
options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) => options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) =>
{ {
ConfigureRabbitMqHost(busFactoryConfigurator, configuration); ConfigureRabbitMqHost(
busFactoryConfigurator,
busRegistrationContext.GetRequiredService<MessagingConfiguration>());
busFactoryConfigurator.UseConsumeFilter(typeof(ProcessTrackingConsumeFilter<>), busRegistrationContext); busFactoryConfigurator.UseConsumeFilter(typeof(ProcessTrackingConsumeFilter<>), busRegistrationContext);
@@ -67,23 +71,14 @@ namespace Musify.Infrastructure.Messaging
return serviceDescriptors; return serviceDescriptors;
} }
static void ConfigureRabbitMqHost(IRabbitMqBusFactoryConfigurator busFactoryConfigurator, IConfiguration configuration) static void ConfigureRabbitMqHost(
IRabbitMqBusFactoryConfigurator busFactoryConfigurator,
MessagingConfiguration massTransitConfiguration)
{ {
var section = configuration.GetSection("MassTransit"); busFactoryConfigurator.Host(massTransitConfiguration.Host, options =>
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 =>
{ {
options.Username(username); options.Username(massTransitConfiguration.Username);
options.Password(password); options.Password(massTransitConfiguration.Password);
} ); } );
} }