From 14cf8e8821b67ccf075c019a1a13898716a79fd6 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 2 Nov 2026 15:02:27 +0100 Subject: [PATCH] refactor(publisher): introduce MessagingServicePublisherConfiguration builder Replace Action parameter on AddMessagingServicePublisher() with a builder to keep the publisher API consistent with the infrastructure layer. - Add MessagingServicePublisherConfiguration exposing AddRabbitMqConnectionFactory() with IConfiguration and Action overloads - Callers that need RabbitMQ must now call cfg.AddRabbitMqConnectionFactory(...) inside the configure delegate instead of configuring RabbitMQ directly --- .../DependencyInjection.cs | 8 +++--- .../MessagingServicePublisherConfiguration.cs | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/infrastructure/DigitalData.MessagingService.Publisher/MessagingServicePublisherConfiguration.cs diff --git a/src/infrastructure/DigitalData.MessagingService.Publisher/DependencyInjection.cs b/src/infrastructure/DigitalData.MessagingService.Publisher/DependencyInjection.cs index c5a0246..757c0a9 100644 --- a/src/infrastructure/DigitalData.MessagingService.Publisher/DependencyInjection.cs +++ b/src/infrastructure/DigitalData.MessagingService.Publisher/DependencyInjection.cs @@ -1,15 +1,17 @@ using DigitalData.MessagingService.Application.Common.Interfaces; using DigitalData.MessagingService.RabbitMQ; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace DigitalData.MessagingService.Publisher; public static class DependencyInjection { - public static IServiceCollection AddMessagingServicePublisher(this IServiceCollection services, Action? configure = null) + public static IServiceCollection AddMessagingServicePublisher(this IServiceCollection services, Action? configure = null) { - if(configure is not null) - services.AddRabbitMqConnectionFactory(configure); + var configuration = new MessagingServicePublisherConfiguration(services); + + configure?.Invoke(configuration); // --- Email Queue (RabbitMQ) --- services.AddSingleton(); diff --git a/src/infrastructure/DigitalData.MessagingService.Publisher/MessagingServicePublisherConfiguration.cs b/src/infrastructure/DigitalData.MessagingService.Publisher/MessagingServicePublisherConfiguration.cs new file mode 100644 index 0000000..3e4fc13 --- /dev/null +++ b/src/infrastructure/DigitalData.MessagingService.Publisher/MessagingServicePublisherConfiguration.cs @@ -0,0 +1,27 @@ +using DigitalData.MessagingService.RabbitMQ; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace DigitalData.MessagingService.Publisher; + +public class MessagingServicePublisherConfiguration +{ + internal IServiceCollection Services { get; } + + internal MessagingServicePublisherConfiguration(IServiceCollection services) + { + Services = services; + } + + public MessagingServicePublisherConfiguration AddRabbitMqConnectionFactory(Action configure) + { + Services.AddRabbitMqConnectionFactory(configure); + return this; + } + + public MessagingServicePublisherConfiguration AddRabbitMqConnectionFactory(IConfiguration configuration, string sectionName = RabbitMqConfiguration.SectionName) + { + Services.AddRabbitMqConnectionFactory(configuration, sectionName); + return this; + } +}