[rabbitmq-discuss] Queue delete causes transaction errors

Aaron Westendorf aaron at agoragames.com
Mon Jul 12 21:32:03 BST 2010

I've confirmed that transactions are being aborted due to a queue
being deleted using an easily-reproducible test case.

The base-case is an exchange and a 1-1 mapping of a routing key to a
destination queue.  The client is simply consuming a published message
and then publishing the next one.  A single client as a consumer is
enough to repeat the bug.

We then have a test client which we can use to attach to an exchange
using a supplied routing key.  It will create its own queue and then
act as a passive listener, for easy monitoring of traffic.  The queue
it uses is set to auto-delete. In high-traffic situations, I would
occasionally see a transaction error in the client.

I setup a test case today where a listener would open a connection and
queue, listen for 2 seconds, then disconnect.  I tried combinations of
auto_delete enabled and disabled, both with and without an explicit
queue delete call, as well as using transactions and re-using a
connection versus closing and reconnecting.  I would run this test
listener while a test client simply published a message to itself
every time it received one.  The client is using transactions,
committing after each publish call.  Within a few minutes, no matter
how my listener was configured, the client would receive a transaction
error.  I repeated this with the 1.8.0 release.

I see that 0.9.1 of the spec adds queue.unbind().  Is that the only
way to avoid this problem, or is there another approach that we can


Aaron Westendorf
Senior Software Engineer
Agora Games
359 Broadway
Troy, NY 12180
Phone: 518.268.1000
aaron at agoragames.com

More information about the rabbitmq-discuss mailing list