/// <summary>
        /// Adds a sink that lets you push log messages to RabbitMQ
        /// Will be used when configuring via configuration file
        /// Is for backward-compatibility with previous version but gives possibility to use multiple hosts
        /// </summary>
        public static LoggerConfiguration RabbitMq(
            this LoggerSinkConfiguration loggerConfiguration,
            string mqHostName, string mqUserName, string mqPassword, string brokerName, Base.EventBus.ExchangeType exchangeType,
            bool exchangeDurable  = false, bool exchangeAutoDelete = false,
            bool queueDurable     = false, bool queueExclusive     = false, bool queueAutoDelete           = false,
            int batchPostingLimit = 0, TimeSpan period             = default, ITextFormatter textFormatter = null
            )
        {
            //RabbitMqClientConfiguration clientConfiguration = new RabbitMqClientConfiguration
            //{
            //    Username = username,
            //    Password = password,
            //    Exchange = exchange,
            //    ExchangeType = exchangeType,
            //    DeliveryMode = deliveryMode,
            //    RouteKey = routeKey,
            //    Port = port,
            //    VHost = vHost,
            //    Heartbeat = heartbeat,
            //    Protocol = protocol
            //};
            //foreach (string hostname in hostnames)
            //{
            //    clientConfiguration.Hostnames.Add(hostname);
            //}

            IConnectionFactory connectionFactory = new ConnectionFactory
            {
                HostName = mqHostName,
                UserName = mqUserName,
                Password = mqPassword,
                AutomaticRecoveryEnabled = true,
                NetworkRecoveryInterval  = TimeSpan.FromSeconds(10),
                RequestedHeartbeat       = TimeSpan.FromSeconds(10),
                DispatchConsumersAsync   = true
            };

            IExchangeDeclareParameters exchangeDeclareParameters = new ExchangeDeclareParameters(brokerName, exchangeType, exchangeDurable, exchangeAutoDelete);
            IQueueDeclareParameters    queueDeclareParameters    = new QueueDeclareParameters(queueDurable, queueExclusive, queueAutoDelete);

            RabbitMqSinkConfiguration sinkConfiguration = new RabbitMqSinkConfiguration
            {
                BatchPostingLimit = batchPostingLimit,
                Period            = period,
                TextFormatter     = textFormatter
            };

            return(RegisterSink(loggerConfiguration, connectionFactory, exchangeDeclareParameters, queueDeclareParameters, sinkConfiguration));
        }
        /// <summary>
        /// Adds a sink that lets you push log messages to RabbitMQ
        /// </summary>
        public static LoggerConfiguration RabbitMq(
            this LoggerSinkConfiguration loggerConfiguration,
            Action <ConnectionFactory, IExchangeDeclareParameters, IQueueDeclareParameters, RabbitMqSinkConfiguration> configure
            /*Action<RabbitMqClientConfiguration, RabbitMqSinkConfiguration> configure*/)
        {
            //RabbitMqClientConfiguration clientConfiguration = new RabbitMqClientConfiguration();
            ConnectionFactory          connectionFactory         = new ConnectionFactory();
            IExchangeDeclareParameters exchangeDeclareParameters = new ExchangeDeclareParameters();
            IQueueDeclareParameters    queueDeclareParameters    = new QueueDeclareParameters();
            RabbitMqSinkConfiguration  sinkConfiguration         = new RabbitMqSinkConfiguration();

            configure(connectionFactory, exchangeDeclareParameters, queueDeclareParameters, sinkConfiguration);

            return(RegisterSink(loggerConfiguration, connectionFactory, exchangeDeclareParameters, queueDeclareParameters, sinkConfiguration));
        }
Beispiel #3
0
        protected override void Load(ContainerBuilder builder)
        {
            var exchangeDeclareParameters = new ExchangeDeclareParameters(_brokerName, _exchangeType, _exchangeDurable, _exchangeAutoDelete);
            var queueDeclareParameters    = new QueueDeclareParameters(_queueDurable, _queueExclusive, _queueAutoDelete);

            var rabbitMqConnectionFactory = new ConnectionFactory
            {
                HostName = _mqHostName,
                UserName = _mqUserName,
                Password = _mqPassword,
                AutomaticRecoveryEnabled = true,
                NetworkRecoveryInterval  = TimeSpan.FromSeconds(10),
                RequestedHeartbeat       = TimeSpan.FromSeconds(10),
                DispatchConsumersAsync   = true
            };

            builder.RegisterInstance(exchangeDeclareParameters).As <IExchangeDeclareParameters>().SingleInstance();
            builder.RegisterInstance(queueDeclareParameters).As <IQueueDeclareParameters>().SingleInstance();
            builder.RegisterInstance(rabbitMqConnectionFactory).As <IConnectionFactory>().SingleInstance();
        }