Exemplo n.º 1
0
        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
                };
            }
        }