Client is still using broker set temporary queue names 
-------------------------------------------------------

                 Key: QPID-880
                 URL: https://issues.apache.org/jira/browse/QPID-880
             Project: Qpid
          Issue Type: Bug
          Components: Java Client
    Affects Versions: M2, M2.1
            Reporter: Martin Ritchie


Java Client still requests that the broker create temporary queue names so if a 
client sends  a message to a new temporary topic such as linke this:

        AMQConnection connection = new AMQConnection("localhost", "guest", 
"guest", "client", "test");
        QueueSession session = connection.createQueueSession(false, 
Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createTemporaryQueue();
        QueueSender sender = session.createSender(queue);
        sender.send(session.createTextMessage());

Then the returned message will fail to be returned as the client cannot create 
the message:
pool-1-thread-1 2008-03-27 09:53:53,744 ERROR [apache.qpid.client.AMQSession] 
Caught exception trying to raise undelivered message exception (dump follows) - 
ignoring...
java.lang.IllegalArgumentException: Destination exchange must not be null
        at org.apache.qpid.client.AMQDestination.<init>(AMQDestination.java:105)
        at org.apache.qpid.client.AMQQueue.<init>(AMQQueue.java:64)
        at 
org.apache.qpid.client.message.AbstractJMSMessage.<init>(AbstractJMSMessage.java:89)
        at 
org.apache.qpid.client.message.JMSTextMessage.<init>(JMSTextMessage.java:65)
        at 
org.apache.qpid.client.message.JMSTextMessageFactory.createMessage(JMSTextMessageFactory.java:43)
        at 
org.apache.qpid.client.message.AbstractJMSMessageFactory.createMessageWithBody(AbstractJMSMessageFactory.java:91)
        at 
org.apache.qpid.client.message.AbstractJMSMessageFactory.createMessage(AbstractJMSMessageFactory.java:97)
        at 
org.apache.qpid.client.message.MessageFactoryRegistry.createMessage(MessageFactoryRegistry.java:106)
        at org.apache.qpid.client.AMQSession$12.run(AMQSession.java:2689)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

The problem is here:
    public AMQQueue(AMQShortString exchangeName, AMQShortString name, boolean 
temporary)
    {
        // queue name is set to null indicating that the broker assigns a name 
in the case of temporary queues
        // temporary queues are typically used as response queues
        this(exchangeName, name, temporary?null:name, temporary, temporary, 
!temporary);
        
    }

Whilst AMQTemporaryQueue passes in a UUID for name AMQQueue throws that away if 
it is a temporary request.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to