diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-03-17 16:54:35 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-03-17 16:54:35 +0000 |
| commit | c34dfdb42cd8756b76ca18db5c0bc67350ece777 (patch) | |
| tree | 5f5f499c646fc546177bfa7a854b351c7627ca76 /java | |
| parent | 93dc6f00ad526943efa66dfd420604fa862d0c14 (diff) | |
| download | qpid-python-c34dfdb42cd8756b76ca18db5c0bc67350ece777.tar.gz | |
QPID-4652 [Java Broker 1.0] delete temporary queues created for exchange subscription when connection closes
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1457485 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java index 75235c7ef0..589c3a0892 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java +++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java @@ -299,6 +299,43 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS vhost.getBindingFactory().addBinding(binding,queue,exchange,null); source.setDistributionMode(StdDistMode.COPY); + if(!isDurable) + { + final String queueName = name; + final AMQQueue tempQueue = queue; + + final Connection_1_0.Task deleteQueueTask = + new Connection_1_0.Task() + { + public void doTask(Connection_1_0 session) + { + if (_vhost.getQueueRegistry().getQueue(queueName) == tempQueue) + { + try + { + tempQueue.delete(); + } + catch (AMQException e) + { + e.printStackTrace(); //TODO. + } + } + } + }; + + getSession().getConnection().addConnectionCloseTask(deleteQueueTask); + + queue.addQueueDeleteTask(new AMQQueue.Task() + { + public void doTask(AMQQueue queue) + { + getSession().getConnection().removeConnectionCloseTask(deleteQueueTask); + } + + + }); + } + qd = new QueueDestination(queue); } catch (AMQSecurityException e) |
