feat(infrastructure): Add RabbitMQ Command Bus integration
- Add RabbitMQ.Client 7.2.1, Microsoft.Extensions.Hosting 10.0.9 - Implement ICommandPublisher interface for async command publishing - Create RabbitMqCommandPublisher with persistent message delivery - Create RabbitMqCommandConsumer BackgroundService for command processing - Add RabbitMqConfiguration with appsettings.json binding - Configure Infrastructure DI with RabbitMQ services - Update Program.cs to support appsettings.Secrets.json - Server: 172.24.12.56:5672, Exchange: emailprofiler.commands
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
using DigitalData.EmailProfiler.Application.Common.Interfaces;
|
||||
using DigitalData.EmailProfiler.Infrastructure.Messaging;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace DigitalData.EmailProfiler.Infrastructure;
|
||||
|
||||
/// <summary>
|
||||
/// Dependency injection configuration for Infrastructure layer
|
||||
/// </summary>
|
||||
public static class DependencyInjection
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds Infrastructure layer services to the DI container
|
||||
/// </summary>
|
||||
public static IServiceCollection AddInfrastructure(
|
||||
this IServiceCollection services,
|
||||
IConfiguration configuration)
|
||||
{
|
||||
// Register RabbitMQ configuration
|
||||
services.Configure<RabbitMqConfiguration>(
|
||||
configuration.GetSection(RabbitMqConfiguration.SectionName));
|
||||
|
||||
// Register RabbitMQ command publisher
|
||||
services.AddSingleton<ICommandPublisher, RabbitMqCommandPublisher>();
|
||||
|
||||
// Register RabbitMQ command consumer as hosted service
|
||||
services.AddHostedService<RabbitMqCommandConsumer>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user