refactor(rabbitmq)!: rename RabbitMqConfiguration to RabbitMqConnectionConfiguration
Rename the RabbitMQ options type to make its purpose explicit and update all consumers in the RabbitMQ, Infrastructure, Publisher, Client and test projects. Inline the connection factory registration in the DI extensions instead of the private AddDefaultServices helper. BREAKING CHANGE: RabbitMqConfiguration is now RabbitMqConnectionConfiguration.
This commit is contained in:
@@ -28,14 +28,14 @@ public class MessagingServiceInfrastructureConfiguration
|
||||
}
|
||||
}
|
||||
|
||||
public MessagingServiceInfrastructureConfiguration AddRabbitMqConnectionFactory(Action<RabbitMqConfiguration> configure)
|
||||
public MessagingServiceInfrastructureConfiguration AddRabbitMqConnectionFactory(Action<RabbitMqConnectionConfiguration> configure)
|
||||
{
|
||||
Services.AddRabbitMqConnectionFactory(configure);
|
||||
_configured.RabbitMqConnectionFactory = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessagingServiceInfrastructureConfiguration AddRabbitMqConnectionFactory(IConfiguration configuration, string sectionName = RabbitMqConfiguration.SectionName)
|
||||
public MessagingServiceInfrastructureConfiguration AddRabbitMqConnectionFactory(IConfiguration configuration, string sectionName = RabbitMqConnectionConfiguration.SectionName)
|
||||
{
|
||||
Services.AddRabbitMqConnectionFactory(configuration, sectionName);
|
||||
_configured.RabbitMqConnectionFactory = true;
|
||||
@@ -57,5 +57,4 @@ public class MessagingServiceInfrastructureConfiguration
|
||||
return this;
|
||||
}
|
||||
#endregion EmailAccountsOptions
|
||||
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public sealed class SendingEmailConsumerPool : IAsyncDisposable
|
||||
private readonly int _concurrency;
|
||||
|
||||
public SendingEmailConsumerPool(
|
||||
IOptions<RabbitMqConfiguration> config,
|
||||
IOptions<RabbitMqConnectionConfiguration> config,
|
||||
IEmailService emailService,
|
||||
IServiceScopeFactory scopeFactory,
|
||||
RabbitMqConnectionFactory cnnFactory,
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace DigitalData.MessagingService.Infrastructure.Services.Background;
|
||||
public class ConsumerInitWorker(
|
||||
SendingEmailConsumerPool ConsumerPool,
|
||||
ILogger<ConsumerInitWorker> Logger,
|
||||
IOptions<RabbitMqConfiguration> RabbitMqOptions,
|
||||
IOptions<RabbitMqConnectionConfiguration> RabbitMqOptions,
|
||||
ConsumerInitHealthCheck HealthCheck) : BackgroundService
|
||||
{
|
||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
|
||||
@@ -16,12 +16,12 @@ namespace DigitalData.MessagingService.Publisher;
|
||||
/// </summary>
|
||||
public sealed class SendingEmailPublisher : ISendingEmailPublisher, IAsyncDisposable
|
||||
{
|
||||
private readonly RabbitMqConfiguration _config;
|
||||
private readonly RabbitMqConnectionConfiguration _config;
|
||||
private readonly ILogger<SendingEmailPublisher> _logger;
|
||||
private readonly RabbitMqConnectionFactory _cnnFactory;
|
||||
private readonly Lazy<Task<IChannel>> _lazyChannel;
|
||||
|
||||
public SendingEmailPublisher(IOptions<RabbitMqConfiguration> config, ILogger<SendingEmailPublisher> logger, RabbitMqConnectionFactory cnnFactory)
|
||||
public SendingEmailPublisher(IOptions<RabbitMqConnectionConfiguration> config, ILogger<SendingEmailPublisher> logger, RabbitMqConnectionFactory cnnFactory)
|
||||
{
|
||||
_config = config.Value;
|
||||
_logger = logger;
|
||||
|
||||
@@ -9,36 +9,26 @@ namespace DigitalData.MessagingService.RabbitMQ
|
||||
/// </summary>
|
||||
public static class DependencyInjection
|
||||
{
|
||||
private static IServiceCollection AddDefaultServices(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<RabbitMqConnectionFactory>();
|
||||
return services;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds Infrastructure layer services to the DI container
|
||||
/// </summary>
|
||||
public static IServiceCollection AddRabbitMqConnectionFactory(this IServiceCollection services, Action<RabbitMqConfiguration> configure)
|
||||
public static IServiceCollection AddRabbitMqConnectionFactory(this IServiceCollection services, Action<RabbitMqConnectionConfiguration> configure)
|
||||
{
|
||||
services.AddDefaultServices();
|
||||
|
||||
// --- RabbitMQ Configuration ---
|
||||
services.Configure(configure);
|
||||
|
||||
return services;
|
||||
return services.AddSingleton<RabbitMqConnectionFactory>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds Infrastructure layer services to the DI container
|
||||
/// </summary>
|
||||
public static IServiceCollection AddRabbitMqConnectionFactory(this IServiceCollection services, IConfiguration configuration, string sectionName = RabbitMqConfiguration.SectionName)
|
||||
public static IServiceCollection AddRabbitMqConnectionFactory(this IServiceCollection services, IConfiguration configuration, string sectionName = RabbitMqConnectionConfiguration.SectionName)
|
||||
{
|
||||
services.AddDefaultServices();
|
||||
|
||||
// --- RabbitMQ Configuration ---
|
||||
services.Configure<RabbitMqConfiguration>(configuration.GetSection(sectionName));
|
||||
services.Configure<RabbitMqConnectionConfiguration>(configuration.GetSection(sectionName));
|
||||
|
||||
return services;
|
||||
return services.AddSingleton<RabbitMqConnectionFactory>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ namespace DigitalData.MessagingService.RabbitMQ
|
||||
/// <summary>
|
||||
/// Configuration for RabbitMQ connection
|
||||
/// </summary>
|
||||
public class RabbitMqConfiguration
|
||||
public class RabbitMqConnectionConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// Configuration section name in appsettings.json
|
||||
@@ -12,7 +12,7 @@ namespace DigitalData.MessagingService.RabbitMQ
|
||||
{
|
||||
private readonly CancellationTokenSource _consumerCts = new CancellationTokenSource();
|
||||
|
||||
private readonly RabbitMqConfiguration _config;
|
||||
private readonly RabbitMqConnectionConfiguration _config;
|
||||
|
||||
private readonly ILogger<RabbitMqConnectionFactory>
|
||||
#if nullable
|
||||
@@ -41,7 +41,7 @@ namespace DigitalData.MessagingService.RabbitMQ
|
||||
return new AsyncEventingBasicConsumer(channel);
|
||||
}
|
||||
|
||||
public RabbitMqConnectionFactory(IOptions<RabbitMqConfiguration> config)
|
||||
public RabbitMqConnectionFactory(IOptions<RabbitMqConnectionConfiguration> config)
|
||||
{
|
||||
_config = config.Value;
|
||||
_lazyConnectionProvider = new Lazy<Task<IConnection>>(async () =>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace DigitalData.MessagingService.Client;
|
||||
|
||||
/// <summary>
|
||||
/// Defines the behavior when <see cref="EmailSender.ConnectRabbitMq(Action{RabbitMQ.RabbitMqConfiguration}, OnReconnect)"/> is called
|
||||
/// Defines the behavior when <see cref="EmailSender.ConnectRabbitMq(Action{RabbitMQ.RabbitMqConnectionConfiguration}, OnReconnect)"/> is called
|
||||
/// while a connection has already been established.
|
||||
/// </summary>
|
||||
public enum OnReconnect
|
||||
|
||||
@@ -21,7 +21,7 @@ internal static class RabbitMqTestConfig
|
||||
public const string DlqExchangeName = "emailprofiler.emails.dlq";
|
||||
public const string DlqRoutingKey = "email.outbox.dlq";
|
||||
|
||||
public static void Apply(RabbitMqConfiguration cfg)
|
||||
public static void Apply(RabbitMqConnectionConfiguration cfg)
|
||||
{
|
||||
cfg.HostName = HostName;
|
||||
cfg.Port = Port;
|
||||
|
||||
@@ -11,12 +11,12 @@ public sealed class EmailSenderUrlParsingTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Applies the same URL-parsing logic used by the URL overload to a fresh
|
||||
/// <see cref="RabbitMqConfiguration"/> and returns it for assertion.
|
||||
/// <see cref="RabbitMqConnectionConfiguration"/> and returns it for assertion.
|
||||
/// </summary>
|
||||
private static RabbitMqConfiguration ParseUrl(string url, string username, string password)
|
||||
private static RabbitMqConnectionConfiguration ParseUrl(string url, string username, string password)
|
||||
{
|
||||
var uri = new Uri(url);
|
||||
var cfg = new RabbitMqConfiguration();
|
||||
var cfg = new RabbitMqConnectionConfiguration();
|
||||
|
||||
cfg.HostName = uri.Host;
|
||||
cfg.Port = uri.IsDefaultPort ? 5672 : uri.Port;
|
||||
@@ -95,7 +95,7 @@ public sealed class EmailSenderUrlParsingTests
|
||||
[Fact]
|
||||
public void ParseUrl_WithRootPath_DoesNotOverrideVirtualHost()
|
||||
{
|
||||
var defaultVHost = new RabbitMqConfiguration().VirtualHost;
|
||||
var defaultVHost = new RabbitMqConnectionConfiguration().VirtualHost;
|
||||
var cfg = ParseUrl("amqp://broker:5672/", "user", "pass");
|
||||
|
||||
Assert.Equal(defaultVHost, cfg.VirtualHost);
|
||||
@@ -104,7 +104,7 @@ public sealed class EmailSenderUrlParsingTests
|
||||
[Fact]
|
||||
public void ParseUrl_WithoutPath_DoesNotOverrideVirtualHost()
|
||||
{
|
||||
var defaultVHost = new RabbitMqConfiguration().VirtualHost;
|
||||
var defaultVHost = new RabbitMqConnectionConfiguration().VirtualHost;
|
||||
var cfg = ParseUrl("amqp://broker:5672", "user", "pass");
|
||||
|
||||
Assert.Equal(defaultVHost, cfg.VirtualHost);
|
||||
|
||||
Reference in New Issue
Block a user