Refactor RabbitMQ DI into extension method

Refactored the registration of `RabbitMqConnectionFactory` and
RabbitMQ configuration into a new `AddRabbitMqConnectionFactory`
extension method for improved modularity and reusability.

- Removed direct calls to `AddSingleton<RabbitMqConnectionFactory>`
  and `Configure<RabbitMqConfiguration>` from the main
  `DependencyInjection` class.
- Added a new static `DependencyInjection` class under the
  `DigitalData.MessagingService.RabbitMQ` namespace.
- The new `AddRabbitMqConnectionFactory` method encapsulates
  RabbitMQ DI logic and accepts `IServiceCollection` and
  `IConfiguration` as parameters.
- Updated `DependencyInjection.cs` to use the new extension method.
This commit is contained in:
2026-07-27 17:10:45 +02:00
parent 56ac720615
commit 977a20fd97
2 changed files with 29 additions and 3 deletions

View File

@@ -34,11 +34,9 @@ public static class DependencyInjection
// --- Email Queue (RabbitMQ) --- // --- Email Queue (RabbitMQ) ---
services.AddSingleton<OutgoingEmailConsumer>(); services.AddSingleton<OutgoingEmailConsumer>();
services.AddSingleton<IOutgoingEmailPublisher, OutgoingEmailPublisher>(); services.AddSingleton<IOutgoingEmailPublisher, OutgoingEmailPublisher>();
services.AddSingleton<RabbitMqConnectionFactory>();
// --- RabbitMQ Configuration --- // --- RabbitMQ Configuration ---
services.Configure<RabbitMqConfiguration>( services.AddRabbitMqConnectionFactory(configuration);
configuration.GetSection(RabbitMqConfiguration.SectionName));
// --- Data Protection (for encryption) --- // --- Data Protection (for encryption) ---
services.AddDataProtection() services.AddDataProtection()

View File

@@ -0,0 +1,28 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace DigitalData.MessagingService.RabbitMQ
{
/// <summary>
/// Dependency injection configuration for Infrastructure layer
/// </summary>
public static class DependencyInjection
{
/// <summary>
/// Adds Infrastructure layer services to the DI container
/// </summary>
public static IServiceCollection AddRabbitMqConnectionFactory(
this IServiceCollection services,
IConfiguration configuration)
{
services.AddSingleton<RabbitMqConnectionFactory>();
// --- RabbitMQ Configuration ---
services.Configure<RabbitMqConfiguration>(
configuration.GetSection(RabbitMqConfiguration.SectionName));
return services;
}
}
}