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:
@@ -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>();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user