[rabbitmq-discuss] .NET DefaultBasicConsumer / BasicQueuingConsumer and 'noack' scenarios
SimonT
simonthorogood at hotmail.com
Fri May 25 08:19:32 BST 2012
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.
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:
RabbitMQ.Client.Exceptions.OperationInterruptedException: The AMQP
operation was
interrupted: AMQP close-reason, initiated by Peer, code=406,
text="PRECONDITION
_FAILED - unknown delivery tag 1", classId=60, methodId=80, cause=
at RabbitMQ.Client.Impl.SimpleBlockingRpcContinuation.GetReply()
at RabbitMQ.Client.Impl.ModelBase.BasicConsume(String queue, Boolean
noAck, S
tring consumerTag, Boolean noLocal, Boolean exclusive, IDictionary
arguments, IB
asicConsumer consumer)
Am I right in thinking then that BasicQueuingConsumer only plays well with
noack=false scenarios - e.g.
var queueingConsumer = new QueueingBasicConsumer(_channel);
_channel.BasicConsume(queueName, false, queueingConsumer);
if so, then for noack=true, is the correct/recommended approach to use a
DefaultBasicConsumer instead.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120525/6858c1b7/attachment.htm>
More information about the rabbitmq-discuss
mailing list