[
https://issues.apache.org/jira/browse/QPID-185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rob Godfrey closed QPID-185.
----------------------------
Resolution: Duplicate
Fix Version/s: (was: M3)
> Amend Java Broker handling of ifUnused & ifEmpty flags
> ------------------------------------------------------
>
> Key: QPID-185
> URL: https://issues.apache.org/jira/browse/QPID-185
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker
> Affects Versions: M1, M2
> Reporter: Marnie McCormack
>
> The java broker will send the correct channel exception for an unknown queue
> but does not yet do so for the ifUnused (or ifEmpty) flags (queues are also
> removed from store regardless of these flags). This needs to be amended.
> This JIRA raised as a result of an email discussion between Gordon and Rajith
> (Unsubscribing from a topic, Dec 8th) - more detail below:
> Rajith Attapattu wrote:
> > As part of the spec we need to throw
> > javax.jms.InvalidDestinationExceptionis the name supplied in the
> > unsubscribe method is not valid.
> > So in order to detect that
> [...]
> > I prefer the first approach as we also need to throw an exception if this
> > topic (queue in topic exchange) has active consumers bound to it.
> > Here is the method in question. (I have also cut/paste the section from the
> > java doc)
> >
> > public void unsubscribe(String name) throws JMSException
> > {
> > checkNotClosed();
> >
> > //send a queue.delete for the subscription
> > String queue = _connection.getClientID() + ":" + name;
> > AMQFrame frame = QueueDeleteBody.createAMQFrame(_channelId, 0,
> > queue, false, false, true);
> > _connection.getProtocolHandler().writeFrame(frame);
> > }
> You can use the 'ifUnused' flag (the first boolean field, occurring
> after queue) to prevent deletion if there are consumers active. However,
> as with all errors in AMQP, this results in the channel being closed.
> The same would happen if the queue name does not exist.
> To avoid the pain of having to recreate all the state of the current
> channel, it might be better to have a separate channel for this purpose.
> The java broker will send the correct channel exception for an unknown
> queue but does not yet do so for the ifUnused (or ifEmpty) flags (queues
> are also removed from store regardless of these flags). The c++ broker
> does currently support these flags and there are tests in the python
> test suite for this.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.