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.