/// <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)); }
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(); }