[rabbitmq-discuss] Queue delete if-empty will delete the queue if there are in the unacked state
matthias at rabbitmq.com
Wed Jan 2 04:53:34 GMT 2013
On 02/01/13 00:14, David Barshow wrote:
> I think this may be a bug.
> Queues will delete when the if-empty bit is set to true when messages
> are in the unacknowledged state.
The AMQP spec is silent on this. The reason for choosing the current
behaviour is for consistency with the various operations that return
message-counts, such as queue.declare and basic.get. The spec mandates
that these counts do not include messages pending acknowledgement. And
indeed that kinda makes sense since it would be a bit odd to be told
that the queue has messages, issue a basic.get, and be told (by a
basic.get-empty response) that the queue is empty (since all the
messages were pending acknowledgement). Also, conceptually, messages
that are pending acknowledgement are not really in the queue anymore;
or, rather, there is nothing in AMQP that suggests, let alone mandates,
such a view.
Having said that, I can certainly see a case for "empty" to mean "no
ready messages and no messages pending acknowledgement". Alas I don't
know how we'd go about meeting such a requirement; I'd be reluctant to
change the semantics of something that has been around for five years,
particularly since we've had zero complaints to date about the current
More information about the rabbitmq-discuss