diff options
3 files changed, 12 insertions, 1 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java b/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java index 9a7f5241a5..85c96bc3bb 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java @@ -1575,6 +1575,10 @@ public class AMQSession_0_10 extends AMQSession<BasicMessageConsumer_0_10, Basic getQpidSession().exchangeUnbind(queue, exchange, binding.getBindingKey()); } + } + + void deleteSubscriptionQueue(AMQDestination dest) throws AMQException + { // We need to delete the subscription queue. if (dest.getAddressType() == AMQDestination.TOPIC_TYPE && dest.getLink().getSubscriptionQueue().isExclusive() && diff --git a/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java b/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java index 902770d901..ef7b8cc217 100644 --- a/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java +++ b/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java @@ -510,6 +510,7 @@ public class BasicMessageConsumer_0_10 extends BasicMessageConsumer<UnprocessedM dest.getDelete() == AddressOption.RECEIVER ) { ((AMQSession_0_10) getSession()).handleNodeDelete(dest); + ((AMQSession_0_10) getSession()).deleteSubscriptionQueue(dest); } // Subscription queue is handled as part of linkDelete method. ((AMQSession_0_10) getSession()).handleLinkDelete(dest); diff --git a/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java b/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java index 6041600364..371b40bfc8 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java +++ b/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java @@ -1407,10 +1407,16 @@ public class AddressBasedDestinationTest extends QpidBrokerTestCase "}"; String addr = "ADDR:amq.topic/test; {link: {name:my-queue, durable:true," + xDeclareArgs + "}}"; - MessageConsumer cons = ssn.createConsumer(ssn.createTopic(addr)); + Destination dest = ssn.createTopic(addr); + MessageConsumer cons = ssn.createConsumer(dest); String verifyAddr = "ADDR:my-queue;{ node: {durable:true, " + xDeclareArgs + "}}"; AMQDestination verifyDest = (AMQDestination)ssn.createQueue(verifyAddr); ((AMQSession_0_10)ssn).isQueueExist(verifyDest, true); + + // Verify that the producer does not delete the subscription queue. + MessageProducer prod = ssn.createProducer(dest); + prod.close(); + ((AMQSession_0_10)ssn).isQueueExist(verifyDest, true); } } |
