Description of problem:
In the new addressing scheme, when you subscribe to an exchange a temp queue is created for the subscriber.
This queue should be exclusive and auto-deleted when the session is closed.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. run "java -cp $QP org.apache.qpid.example.Drain amq.topic", where $QP is the classpath.
2. Check the logs on client or broker to observe that the queue created does not have the exclusive and auto-delete bits set.
The queue-declare does not set the exclusive and auto-delete to true.
The queues created should be exclusive and auto-deleted.
The queue deletion depends on the reliability mode.
If reliability mode is "unreliable" or "at-most-once" then the queue should be created with auto-delete=true.
If reliability mode is "at-least-once" then the queue should set auto-delete=false, and the queue will only be deleted if the client app invokes consumer.close().
If x-declare properties include auto-delete=true, then the reliability mode is ignored.
Unless there is a way (e.g. through auto-delete in x-declare) to avoid this, this is a blocker as it will leave unsubscribed queues bound to the exchange causing message build up and eventually preventing publication to that exchange without manual intervention.
This is tracked in upstream via QPID-2733
Currently all subscription queues created are set to auto-delete=true.
The reliability mode is not implemented yet.
Git commit URL
confirm that all subscription queues are auto-delete now, thus they disappear after session is closed. So the expected behavior is there. Nevertheless queues are hard coded as auto-delete and this can not be changed. I filled a bug concerning this:
validated on RHEL5.5/RHEL4 i386 / x86_64
# rpm -qa | grep -E '(qpid|openais|rhm)' | sort -u