refactor(publisher): introduce MessagingServicePublisherConfiguration builder

Replace Action<RabbitMqConfiguration> parameter on AddMessagingServicePublisher()
with a builder to keep the publisher API consistent with the infrastructure layer.

- Add MessagingServicePublisherConfiguration exposing
  AddRabbitMqConnectionFactory() with IConfiguration and Action<T> overloads
- Callers that need RabbitMQ must now call cfg.AddRabbitMqConnectionFactory(...)
  inside the configure delegate instead of configuring RabbitMQ directly
This commit is contained in:
2026-11-02 15:02:27 +01:00
parent 5944823155
commit 14cf8e8821
2 changed files with 32 additions and 3 deletions

View File

@@ -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<RabbitMqConfiguration>? configure = null)
public static IServiceCollection AddMessagingServicePublisher(this IServiceCollection services, Action<MessagingServicePublisherConfiguration>? configure = null)
{
if(configure is not null)
services.AddRabbitMqConnectionFactory(configure);
var configuration = new MessagingServicePublisherConfiguration(services);
configure?.Invoke(configuration);
// --- Email Queue (RabbitMQ) ---
services.AddSingleton<ISendingEmailPublisher, SendingEmailPublisher>();

View File

@@ -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<RabbitMqConfiguration> configure)
{
Services.AddRabbitMqConnectionFactory(configure);
return this;
}
public MessagingServicePublisherConfiguration AddRabbitMqConnectionFactory(IConfiguration configuration, string sectionName = RabbitMqConfiguration.SectionName)
{
Services.AddRabbitMqConnectionFactory(configuration, sectionName);
return this;
}
}