On 07/27/2011 12:35 PM, Jiri Krutil wrote:
Yes, each Receiver is closed right after its creation, before the next
attempt to declare the queue.

The behaviour you describe seems to contradict the specs to some extent.
The AMQP 0.10 specs says:

Sorry, my mistake. I was too loose with my language. I should have said that the queue would be deleted when the session for the sender/receiver is closed.

queue.declare, auto-delete:
If this field is set and the exclusive field is also set, then the queue
MUST be deleted when the session closes. If this field is set and the
exclusive field is not set the queue is deleted when all the consumers
have finished using it. Last consumer can be cancelled either explicitly
or because its
session is closed. If there was no consumer ever on the queue, it won't
be deleted.
The server MUST ignore the auto-delete field if the queue already exists.

My question is: If I declare an auto-delete queue by creating a Receiver
and then closing the Receiver, will the queue continue to exist within
the current Session?

Yes, *if* it is exclusive.

Does this depend on whether the queue is exclusive?

Yes.

The specs also says:

exchange.declare:
The server MUST ignore the durable field if the exchange already exists.
The server MUST ignore the auto-delete field if the exchange already
exists.

Is this the case for Qpid?

Yes, redeclaring an exchange with a different durability will be ignored. (We don't implement auto-delete exchanges at all at present).

Note that re-declaration is different from what the assertion facility does in the messaging API. That is based on an explicit query and a client side check.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to