Exemplo n.º 1
0
        private IRabbitBusBuilder UseConnectionConfig(RabbitMqConfiguration rabbitMqConfiguration)
        {
            _configuration = rabbitMqConfiguration.Connection;
            if (!string.IsNullOrEmpty(rabbitMqConfiguration.Host))
            {
                _configuration.Hosts.Add(new HostConfiguration()
                {
                    Host = rabbitMqConfiguration.Host,
                    Port = rabbitMqConfiguration.Port
                });
            }

            return(this);
        }
Exemplo n.º 2
0
        public IRabbitBusBuilder UseRabbitMqConfiguration(RabbitMqConfiguration rabbitMqConfiguration)
        {
            UseConnectionConfig(rabbitMqConfiguration);

            if (rabbitMqConfiguration?.Exchanges != null)
            {
                foreach (var exchangeConfig in rabbitMqConfiguration.Exchanges)
                {
                    UseExchange(exchangeConfig.Name, x =>
                    {
                        x.AsAutoDelete(exchangeConfig.AutoDelete);
                        x.AsDurable(exchangeConfig.Durable);
                        x.WithType(exchangeConfig.Type);

                        if (exchangeConfig.Args != null && exchangeConfig.Args.Count > 0)
                        {
                            foreach (var arg in exchangeConfig.Args)
                            {
                                x.WithArgument(arg.Key, arg.Value);
                            }
                        }
                    });
                }
            }

            if (rabbitMqConfiguration.Connection != null)
            {
                foreach (var queueConfig in rabbitMqConfiguration.Queues)
                {
                    UseQueue(queueConfig.Name, x =>
                    {
                        x.AsAutoDelete(queueConfig.AutoDelete);
                        x.AsDurable(queueConfig.Durable);
                        x.AsExclusive(queueConfig.Exclusive);


                        if (queueConfig.Args != null && queueConfig.Args.Count > 0)
                        {
                            foreach (var arg in queueConfig.Args)
                            {
                                x.WithArgument(arg.Key, arg.Value);
                            }
                        }

                        if (queueConfig.PerQueueMessageTtl.HasValue)
                        {
                            x.WithMessageTtl(TimeSpan.FromMilliseconds(queueConfig.PerQueueMessageTtl.Value));
                        }
                        //if (!string.IsNullOrEmpty(queueConfig.DeadLetterExchange))
                        //{

                        //    x.WithDeadLetterExchange(queueConfig.DeadLetterExchange);
                        //}
                    });
                }
            }

            if (rabbitMqConfiguration.Binding != null)
            {
                foreach (var bindingConfig in rabbitMqConfiguration.Binding)
                {
                    _bindingConfigurations.Add(new BindingConfiguration()
                    {
                        ExchangeName = bindingConfig.ExchangeName,
                        QueueName    = bindingConfig.QueueName,
                        RoutingKey   = bindingConfig.RoutingKey,
                        Args         = bindingConfig.Args,
                    });
                }
            }

            return(this);
        }