This commit is contained in:
2026-03-20 21:45:36 +01:00
parent b34a711d2d
commit 1bd8c8779d
4 changed files with 39 additions and 25 deletions
@@ -11,7 +11,8 @@ namespace Musify.Infrastructure.Configuration
serviceDescriptors
.AddValidatedConfiguration<DatabaseConfiguration>(configuration, DatabaseConfiguration.SectionName)
.AddValidatedConfiguration<KeycloakConfiguration>(configuration, KeycloakConfiguration.SectionName)
.AddValidatedConfiguration<InfrastructureStorageConfiguration>(configuration, InfrastructureStorageConfiguration.SectionName);
.AddValidatedConfiguration<InfrastructureStorageConfiguration>(configuration, InfrastructureStorageConfiguration.SectionName)
.AddValidatedConfiguration<MessagingConfiguration>(configuration, MessagingConfiguration.SectionName);
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)
.AddStorageHandler()
.AddPictureHandler()
.AddMassTransitClient(configuration)
.AddMassTransitClient()
.AddScoped<IEventBus, MassTransitEventBus>()
.AddScoped<IProcessTrackingStore, ProcessTrackingStore>();
@@ -34,7 +34,7 @@ namespace Musify.Infrastructure
.AddDatabase(configuration)
.AddStorageHandler()
.AddPictureHandler()
.AddMassTransitConsumers(configuration)
.AddMassTransitConsumers()
.AddScoped<IEventBus, MassTransitEventBus>()
.AddScoped<IProcessTrackingStore, ProcessTrackingStore>();
@@ -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<MessagingConfiguration>()));
} );
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<MessagingConfiguration>());
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);
} );
}