diff --git a/CleanArchitecture.Api/Program.cs b/CleanArchitecture.Api/Program.cs index 62a34d3..5fb7fad 100644 --- a/CleanArchitecture.Api/Program.cs +++ b/CleanArchitecture.Api/Program.cs @@ -31,6 +31,7 @@ builder.Services if (builder.Environment.IsProduction()) { var rabbitHost = builder.Configuration["RabbitMQ:Host"]; + var rabbitPort = builder.Configuration["RabbitMQ:Port"]; var rabbitUser = builder.Configuration["RabbitMQ:Username"]; var rabbitPass = builder.Configuration["RabbitMQ:Password"]; @@ -39,7 +40,7 @@ if (builder.Environment.IsProduction()) .AddSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")!) .AddRedis(builder.Configuration["RedisHostName"]!, "Redis") .AddRabbitMQ( - $"amqp://{rabbitUser}:{rabbitPass}@{rabbitHost}", + $"amqp://{rabbitUser}:{rabbitPass}@{rabbitHost}:{rabbitPort}", name: "RabbitMQ"); } diff --git a/CleanArchitecture.Api/appsettings.Development.json b/CleanArchitecture.Api/appsettings.Development.json index 342ecd0..44623b8 100644 --- a/CleanArchitecture.Api/appsettings.Development.json +++ b/CleanArchitecture.Api/appsettings.Development.json @@ -16,6 +16,7 @@ "RedisHostName": "", "RabbitMQ": { "Host": "localhost", + "Port": 5672, "Username": "guest", "Password": "guest", "Enabled": "True" diff --git a/CleanArchitecture.Api/appsettings.Integration.json b/CleanArchitecture.Api/appsettings.Integration.json index 446fd0c..2ae8fa8 100644 --- a/CleanArchitecture.Api/appsettings.Integration.json +++ b/CleanArchitecture.Api/appsettings.Integration.json @@ -8,6 +8,7 @@ "RedisHostName": "", "RabbitMQ": { "Host": "localhost", + "Port": 5672, "Username": "guest", "Password": "guest", "Enabled": "True" diff --git a/CleanArchitecture.Api/appsettings.json b/CleanArchitecture.Api/appsettings.json index e130b52..eb84fec 100644 --- a/CleanArchitecture.Api/appsettings.json +++ b/CleanArchitecture.Api/appsettings.json @@ -17,6 +17,7 @@ "RedisHostName": "redis", "RabbitMQ": { "Host": "rabbitmq", + "Port": 5672, "Username": "admin", "Password": "DOIA9234JF", "Enabled": "True" diff --git a/CleanArchitecture.Domain/Rabbitmq/RabbitMqConfiguration.cs b/CleanArchitecture.Domain/Rabbitmq/RabbitMqConfiguration.cs index fc9ec38..e293b6f 100644 --- a/CleanArchitecture.Domain/Rabbitmq/RabbitMqConfiguration.cs +++ b/CleanArchitecture.Domain/Rabbitmq/RabbitMqConfiguration.cs @@ -3,6 +3,7 @@ namespace CleanArchitecture.Domain.Rabbitmq; public sealed class RabbitMqConfiguration { public string Host { get; set; } = string.Empty; + public int Port { get; set; } public bool Enabled { get; set; } public string Username { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; diff --git a/CleanArchitecture.Domain/Rabbitmq/RabbitMqHandler.cs b/CleanArchitecture.Domain/Rabbitmq/RabbitMqHandler.cs index 43732ab..1e2b48e 100644 --- a/CleanArchitecture.Domain/Rabbitmq/RabbitMqHandler.cs +++ b/CleanArchitecture.Domain/Rabbitmq/RabbitMqHandler.cs @@ -39,6 +39,7 @@ public sealed class RabbitMqHandler : BackgroundService { AutomaticRecoveryEnabled = true, HostName = configuration.Host, + Port = configuration.Port, UserName = configuration.Username, Password = configuration.Password, DispatchConsumersAsync = true diff --git a/CleanArchitecture.IntegrationTests/Constants/Configuration.cs b/CleanArchitecture.IntegrationTests/Constants/Configuration.cs index a7774c6..892194c 100644 --- a/CleanArchitecture.IntegrationTests/Constants/Configuration.cs +++ b/CleanArchitecture.IntegrationTests/Constants/Configuration.cs @@ -4,5 +4,5 @@ public static class Configuration { public const int RedisPort = 6379; public const int MsSqlPort = 1433; - public const int RabbitMqPort = 5673; + public const int RabbitMqPort = 5672; } diff --git a/CleanArchitecture.IntegrationTests/GlobalSetupFixture.cs b/CleanArchitecture.IntegrationTests/GlobalSetupFixture.cs index 7805a7d..13a8277 100644 --- a/CleanArchitecture.IntegrationTests/GlobalSetupFixture.cs +++ b/CleanArchitecture.IntegrationTests/GlobalSetupFixture.cs @@ -22,6 +22,8 @@ internal class GlobalSetupFixture .Build(); public static RabbitMqContainer RabbitContainer { get; } = new RabbitMqBuilder() + .WithUsername("guest") + .WithPassword("guest") .WithPortBinding(Configuration.RabbitMqPort, assignRandomHostPort: true) .Build(); diff --git a/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs b/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs index 9be56e4..848b849 100644 --- a/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs +++ b/CleanArchitecture.IntegrationTests/Infrastructure/CleanArchitectureWebApplicationFactory.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using CleanArchitecture.Domain.Rabbitmq; using CleanArchitecture.IntegrationTests.Constants; using CleanArchitecture.IntegrationTests.Infrastructure.Auth; using Microsoft.AspNetCore.Hosting; @@ -33,22 +34,27 @@ public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFacto base.ConfigureWebHost(builder); - builder.ConfigureAppConfiguration(configuration => + var configuration = new ConfigurationBuilder() + .Build(); + + builder.ConfigureAppConfiguration(configurationBuilder => { var redisPort = GlobalSetupFixture.RedisContainer.GetMappedPublicPort(Configuration.RedisPort); var rabbitPort = GlobalSetupFixture.RabbitContainer.GetMappedPublicPort(Configuration.RabbitMqPort); - configuration.AddInMemoryCollection([ + configurationBuilder.AddInMemoryCollection([ new KeyValuePair( "ConnectionStrings:DefaultConnection", GlobalSetupFixture.DatabaseConnectionString), new KeyValuePair( - "RedisStackExchange:RedisConfigString", - $"localhost:{redisPort},abortConnect=true"), + "RedisHostName", + $"localhost:{redisPort}"), new KeyValuePair( - "RabbitMQ:Host", - $"localhost:{rabbitPort}") + "RabbitMQ:Port", + rabbitPort.ToString()) ]); + + configuration = configurationBuilder.Build(); }); builder.ConfigureServices(services => @@ -66,6 +72,19 @@ public sealed class CleanArchitectureWebApplicationFactory : WebApplicationFacto using var scope = sp.CreateScope(); var scopedServices = scope.ServiceProvider; + + // Readd rabbitmq options to use the correct port + var rabbitMq = new RabbitMqConfiguration(); + configuration.Bind("RabbitMQ", rabbitMq); + services.AddSingleton(rabbitMq); + + // Readd IDistributedCache to replace the memory cache with redis + services.AddStackExchangeRedisCache(options => + { + options.Configuration = configuration["RedisHostName"]; + options.InstanceName = "clean-architecture"; + }); + _registerCustomServicesHandler?.Invoke(services, sp, scopedServices); }); }