<div>In a consumer scenario where messages are ack'd, we are using a BasicQueuingConsumer and a Qos(0, x, false) operation to ensure that only a specific no. (x) of unack'd messages are dequeued at any time. This seems to work well.<br></div><div><br></div><div>If however, I try setting noack = true and switch off the Qos call (lets say we favour throughput over guaranteed delivery), I get an exception from RabbitMQ:</div><div><br></div><div>RabbitMQ.Client.Exceptions.OperationInterruptedException: The AMQP operation was</div><div>&nbsp;interrupted: AMQP close-reason, initiated by Peer, code=406, text="PRECONDITION</div><div>_FAILED - unknown delivery tag 1", classId=60, methodId=80, cause=</div><div>&nbsp; &nbsp;at RabbitMQ.Client.Impl.SimpleBlockingRpcContinuation.GetReply()</div><div>&nbsp; &nbsp;at RabbitMQ.Client.Impl.ModelBase.BasicConsume(String queue, Boolean noAck, S</div><div>tring consumerTag, Boolean noLocal, Boolean exclusive, IDictionary arguments, IB</div><div>asicConsumer consumer)</div><div><br></div><div>Am I right in thinking then that BasicQueuingConsumer only plays well with noack=false scenarios - e.g.</div><div><br></div><div>var queueingConsumer = new QueueingBasicConsumer(_channel);</div><div>_channel.BasicConsume(queueName, false, queueingConsumer);</div><div><br></div><div>if so, then for noack=true, is the correct/recommended approach to use a DefaultBasicConsumer instead.&nbsp;</div><div><br></div>