- 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
33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|