private void OnModelCreated(object sender, ModelCreatedEventArgs e)
        {
            _declarationHelper.Clear();

            // This occurs on a new channel. Therefore previous in-flight messages will never be confirmed but may have duplicate sequence numbers.
            // Hence we clear them out. These messages will still time out like normal.
            messagesInFlight.Clear();
        }
        private void OnModelCreated(object sender, ModelCreatedEventArgs args)
        {
            IModel channel = args.Channel;

            if (_queueProperties.ShouldDeclare)
            {
                _declarationHelper.Clear();
                _declarationHelper.DeclareQueue(_queueProperties.Name, channel);
            }

            channel.BasicQos(0, _queueProperties.PrefetchLimit, false);

            var consumer = new EventingBasicConsumer(channel);

            consumer.Received += (ch, ea) =>
            {
                var msg = Convert(ea, ((IBasicConsumer)ch).Model);
                queue.Enqueue(msg);
            };
            channel.BasicConsume(_queueProperties.Name, false, consumer);
        }