Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > JMS messaging question

Reply
Thread Tools

JMS messaging question

 
 
Blake Essing
Guest
Posts: n/a
 
      09-14-2006

I'm having some trouble with JMS messages. I have the following method
to put a message to a SonicMQ queue via JMS and I want to read the response
message that comes back. I am putting the message successfully, but the
code times out every time when trying to get the response. If anyone can see
something I have wrong in the code, please let me know. I'm new to JMS so I
assume that I'm missing something very basic. The getCorrelationId method
just creates a correlation id based on some literals and a timestamp.



public String sendXml(String pXML) throws ConnectionException {
if (pXML == null)
throw new ConnectionException("No XML data was entered.");

String correlationId = null;

try {
QueueSession queueSession =
mQueueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender(mQueue);

TextMessage message = queueSession.createTextMessage();
message.setJMSReplyTo((Queue)mJndiContext.lookup(m ResponseQueue));
message.setJMSExpiration(mTimeout);
correlationId = getCorrelationId(1);
message.setJMSCorrelationID(correlationId);
message.setText(pXML);

queueSender.send(message, DeliveryMode.PERSISTENT,
Message.DEFAULT_PRIORITY, mTimeout);
String JMSCorrelationId = message.getJMSMessageID();
} catch (JMSException e) {
throw new ConnectionException("Got JMS exception trying to
connect to the queue " + mQueue + ".");
} catch (NamingException ne) {
throw new ConnectionException("Got naming exception trying to
lookup queue " + mQueue + ".");
}

try {
QueueSession queueSession =
mQueueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue receiveQueue = (Queue)mJndiContext.lookup(mResponseQueue);
QueueReceiver queueReceiver =
queueSession.createReceiver(receiveQueue, correlationId);
Message msg = queueReceiver.receive(mTimeout);

if (msg != null) {
String textMsg = null;
if (msg instanceof TextMessage) {
return ((TextMessage) msg).getText().toString();
} else if (msg instanceof BytesMessage) {
ByteArrayOutputStream bytes = new
ByteArrayOutputStream();
byte[] byteBuffer = new byte[1024];
int read = 0;
while ((read = ((BytesMessage)
msg).readBytes(byteBuffer)) != -1) {
bytes.write(byteBuffer, 0, read);
}
return new String(bytes.toByteArray());
} else {
throw new ConnectionException("Did not receive a
readable message.");
}
} else {
throw new ConnectionException("Did not receive a response in
the time allotted.");
}
} catch (JMSException e) {
throw new ConnectionException("Got JMS exception trying to
connect to the queue " + mResponseQueue + ".");
} catch (NamingException ne) {
throw new ConnectionException("Got naming exception trying to
lookup queue " + mResponseQueue + ".");
}

}


 
Reply With Quote
 
 
 
 
Rob
Guest
Posts: n/a
 
      09-15-2006
"Blake Essing" <(E-Mail Removed)> wrote in message
news:%wlOg.968394$084.466245@attbi_s22...
>
> I'm having some trouble with JMS messages. I have the following method
> to put a message to a SonicMQ queue via JMS and I want to read the
> response message that comes back. I am putting the message successfully,
> but the code times out every time when trying to get the response. If
> anyone can see something I have wrong in the code, please let me know.
> I'm new to JMS so I assume that I'm missing something very basic. The
> getCorrelationId method just creates a correlation id based on some
> literals and a timestamp.


It all depends on what the other side does in this situation, but how you
would normally you would use the JMSCorrelationID is as follows :

- The sender saves the JMSMessageID of the request message it sends
- The receiver copies the JMSMessageID into the JMSCorrelationID of the
reply
- The sender matches the saved JMSMessageID of the request to the
JMSCorrelationID of the reply

Rob


 
Reply With Quote
 
 
 
 
Lakshmi Ashok
Guest
Posts: n/a
 
      09-15-2006
>> I am putting the message successfully, but the
code times out every time when trying to get the response.

<i>
What exactly do u mean by comes out? Is there any exception thrown ?
Where do u see the flow stopping ?

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
implementing or using jms or running jms without application server ravinder.ggl@gmail.com Java 0 06-26-2007 10:26 AM
Upgrade path for MCSA:2000 Messaging to MCSA:2003 Messaging D. Young MCSA 2 04-05-2005 08:19 AM
How to setup JBoss for JMS (not MDB-JMS) ? Thomas Stein Java 0 10-18-2004 09:10 PM
JMS-like Messaging Service for Python? Sarah Wang Python 2 05-29-2004 07:56 PM
JMS: JBoss to Weblogic messaging Mayor Curley Java 0 08-25-2003 01:44 AM



Advertisments