public static IServiceCollection AddRabbitMQ(this IServiceCollection services) { services.AddSingleton <IEventBus>(sp => { var configuration = sp.GetService <IConfiguration>(); var options = new RabbitMQOptions(); var section = configuration.GetSection("rabbitmq"); section.Bind(options); var logger = sp.GetRequiredService <ILogger <RabbitMQConnection> >(); var rabbitMQConnection = new RabbitMQConnection(logger, options); var eventLogger = sp.GetService <ILogger <RabbitMQEventBus> >(); var subscriptionManagerLogger = sp.GetRequiredService <ILogger <SubscriptionManager> >(); var subscriptionManager = new SubscriptionManager(sp, subscriptionManagerLogger); return(new RabbitMQEventBus(rabbitMQConnection, eventLogger, subscriptionManager)); }); return(services); }
public RabbitMQConnection(ILogger <RabbitMQConnection> logger, RabbitMQOptions options) { this.logger = logger; lock (sync_root) { this.logger.LogInformation($"Setting up Connection Factory to Rabbit MQ Host: {options.HostName} User : {options.UserName}"); if (options.Password.Length == 0) { this.logger.LogInformation("Password is Empty"); } this.QueueName = options.QueueName; this.Exchange = options.Exchange; this.factory = new ConnectionFactory { HostName = options.HostName, UserName = options.UserName, Password = options.Password, Port = options.Port }; } }