You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Simon Wistow <si...@thegestalt.org> on 2007/04/24 15:23:16 UTC
Problem with Temporary Queues
I seem to have run into some problems with my code and I'm trying to
track down if it's a regression in my code or a change in ActiveMQ that
I didn't notice.
I'm attempting to send a message to a temporary queue and then wait for
a reply using something like
Destination destination;
QueueSession session;
QueueConnection connection;
QueueSender sender;
ActiveMQConnectionFactory connectionFactory;
connectionFactory = new ActiveMQConnectionFactory(user, pwd, url);
session = connection.createSession(false, ack_mode);
connection = connectionFactory.createQueueConnection();
destination = session.createQueue(subject);
publisher = session.createSender(destination);
Queue tmp_queue = session.createTemporaryQueue();
QueueReceiver tmp = session.createReceiver(tmp_queue);
Message message = createNewMessage();
message.setJMSReplyTo(queue);
sender.send(message);
Message tmp_mess = (Message) tmp.receive(timeout);
The Queue at the other end recieves the message fine and replies using
what appears to be the right queue ID
Message reply = createMessage();
reply.setJMSCorrelationID(subject);
Queue reply_queue = (Queue) original_message.getJMSReplyTo();
QueueSender sender = session.createSender(reply_queue);
sender.send(reply);
However tmp.receive(timeout) never gets a message back, it only ever
times out. Changing the methods to use Topic in place of Queue works
absolutely fine.
I'm pretty sure this code used work - I'm just about to start bisecting
every change however I've also upgraded ActiveMQ from 0.99 to 4.11 so I
wondered if that might have been the cause.
Any ideas?
thanks,
Simon
Re: Problem with Temporary Queues
Posted by David Budworth <db...@gmail.com>.
the connection that is doing tmp.receive(timeout) was started? ( ie:
connection.start() )
If a connection is not started it can send but not receive a message.
may not be it, but that gets me reasonably often when ever I change
connection creation schemes
On 4/24/07, James Strachan <ja...@gmail.com> wrote:
>
> Your code looks fine so not sure the issue. The server side isn't
> using transacted mode or anything?
>
> BTW this might be useful...
>
> http://cwiki.apache.org/ACTIVEMQ/how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.html
>
> On 4/24/07, Simon Wistow <si...@thegestalt.org> wrote:
> >
> > I seem to have run into some problems with my code and I'm trying to
> > track down if it's a regression in my code or a change in ActiveMQ that
> > I didn't notice.
> >
> > I'm attempting to send a message to a temporary queue and then wait for
> > a reply using something like
> >
> >
> > Destination destination;
> > QueueSession session;
> > QueueConnection connection;
> > QueueSender sender;
> > ActiveMQConnectionFactory connectionFactory;
> >
> > connectionFactory = new ActiveMQConnectionFactory(user, pwd, url);
> > session = connection.createSession(false, ack_mode);
> > connection = connectionFactory.createQueueConnection();
> > destination = session.createQueue(subject);
> > publisher = session.createSender(destination);
> >
> > Queue tmp_queue = session.createTemporaryQueue();
> > QueueReceiver tmp = session.createReceiver(tmp_queue);
> >
> > Message message = createNewMessage();
> >
> > message.setJMSReplyTo(queue);
> > sender.send(message);
> >
> > Message tmp_mess = (Message) tmp.receive(timeout);
> >
> >
> > The Queue at the other end recieves the message fine and replies using
> > what appears to be the right queue ID
> >
> >
> > Message reply = createMessage();
> >
> > reply.setJMSCorrelationID(subject);
> >
> > Queue reply_queue = (Queue) original_message.getJMSReplyTo();
> > QueueSender sender = session.createSender(reply_queue);
> > sender.send(reply);
> >
> >
> > However tmp.receive(timeout) never gets a message back, it only ever
> > times out. Changing the methods to use Topic in place of Queue works
> > absolutely fine.
> >
> > I'm pretty sure this code used work - I'm just about to start bisecting
> > every change however I've also upgraded ActiveMQ from 0.99 to 4.11 so I
> > wondered if that might have been the cause.
> >
> > Any ideas?
> >
> > thanks,
> > Simon
> >
>
>
> --
> James
> -------
> http://macstrac.blogspot.com/
>
Re: Problem with Temporary Queues
Posted by James Strachan <ja...@gmail.com>.
Your code looks fine so not sure the issue. The server side isn't
using transacted mode or anything?
BTW this might be useful...
http://cwiki.apache.org/ACTIVEMQ/how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.html
On 4/24/07, Simon Wistow <si...@thegestalt.org> wrote:
>
> I seem to have run into some problems with my code and I'm trying to
> track down if it's a regression in my code or a change in ActiveMQ that
> I didn't notice.
>
> I'm attempting to send a message to a temporary queue and then wait for
> a reply using something like
>
>
> Destination destination;
> QueueSession session;
> QueueConnection connection;
> QueueSender sender;
> ActiveMQConnectionFactory connectionFactory;
>
> connectionFactory = new ActiveMQConnectionFactory(user, pwd, url);
> session = connection.createSession(false, ack_mode);
> connection = connectionFactory.createQueueConnection();
> destination = session.createQueue(subject);
> publisher = session.createSender(destination);
>
> Queue tmp_queue = session.createTemporaryQueue();
> QueueReceiver tmp = session.createReceiver(tmp_queue);
>
> Message message = createNewMessage();
>
> message.setJMSReplyTo(queue);
> sender.send(message);
>
> Message tmp_mess = (Message) tmp.receive(timeout);
>
>
> The Queue at the other end recieves the message fine and replies using
> what appears to be the right queue ID
>
>
> Message reply = createMessage();
>
> reply.setJMSCorrelationID(subject);
>
> Queue reply_queue = (Queue) original_message.getJMSReplyTo();
> QueueSender sender = session.createSender(reply_queue);
> sender.send(reply);
>
>
> However tmp.receive(timeout) never gets a message back, it only ever
> times out. Changing the methods to use Topic in place of Queue works
> absolutely fine.
>
> I'm pretty sure this code used work - I'm just about to start bisecting
> every change however I've also upgraded ActiveMQ from 0.99 to 4.11 so I
> wondered if that might have been the cause.
>
> Any ideas?
>
> thanks,
> Simon
>
--
James
-------
http://macstrac.blogspot.com/