private IModel CreateConsumerChannel() { if (!_persistentConnection.IsConnected) { _persistentConnection.TryConnect(); } var channel = _persistentConnection.CreateModel(); //channel.ExchangeDeclare(exchange: BROKER_NAME, type: "direct"); //channel.QueueDeclare(queue: _queueName, // durable: true, // exclusive: false, // autoDelete: false, // arguments: null); var consumer = new EventingBasicConsumer(channel); consumer.Received += async(model, ea) => { var eventName = ea.RoutingKey; var message = Encoding.UTF8.GetString(ea.Body); if (await ProcessEvent(eventName, message)) { channel.BasicAck(ea.DeliveryTag, multiple: false); } }; channel.BasicConsume(queue: _queueName, autoAck: false, consumer: consumer); channel.CallbackException += (sender, ea) => { _consumerChannel?.Dispose(); _consumerChannel = CreateConsumerChannel(); }; return(channel); }
private IModel CreateConsumerChannel() { if (!_persistentConnection.IsConnected) { _persistentConnection.TryConnect(); } var channel = _persistentConnection.CreateModel(); if (_prefetchCount > 0) { channel.BasicQos(0, (ushort)_prefetchCount, false); } var consumer = new EventingBasicConsumer(channel); consumer.Received += async(model, ea) => { var eventName = ea.RoutingKey; var message = Encoding.UTF8.GetString(ea.Body); if (await ProcessEvent(eventName, message)) { channel.BasicAck(ea.DeliveryTag, multiple: false); } }; channel.BasicConsume(queue: _queueName, autoAck: false, consumer: consumer); channel.CallbackException += (sender, ea) => { _consumerChannel?.Dispose(); _consumerChannel = CreateConsumerChannel(); }; return(channel); }