Closing Connections on asynchronous messaging in JMS
Posted
by The Elite Gentleman
on Stack Overflow
See other posts from Stack Overflow
or by The Elite Gentleman
Published on 2010-03-19T10:05:54Z
Indexed on
2010/03/19
10:21 UTC
Read the original article
Hit count: 337
Hi Everyone!
I have created a JMS wrapper (similar to Springs JmsTemplate since I'm not using Springs) and I was wondering: If I setup asynchronous messaging, when is a good time to close connections and JMS relates resources (so that the Connection Factory in the Resource Pool can be available)?
Thanks
Here's the source code for receiving JMS messages
public Message receive() throws JMSException {
QueueConnection connection = null;
QueueSession session = null;
QueueReceiver consumer = null;
try {
// TODO Auto-generated method stub
connection = factory.createQueueConnection();
if (connection != null && getExceptionListener() != null) {
connection.setExceptionListener(getExceptionListener());
}
session = connection.createQueueSession(isSessionTransacted(), getAcknowledgeMode());
consumer = session.createReceiver(queue);
if (getMessageListener() != null) {
consumer.setMessageListener(getMessageListener());
}
//Begin
connection.start();
if (getMessageListener() == null) {
return null;
}
return receive(session, consumer);
} catch (JMSException e) {
// TODO: handle exception
logger.error(e.getLocalizedMessage(), e);
throw e;
} finally {
JMSUtil.closeMessageConsumer(consumer);
JMSUtil.closeSession(session, false); //false = don't commit.
JMSUtil.closeConnection(connection, true); //true = stop before close.
}
As you can see, if getMessageListener() != null
then apply it to the MessageConsumer
. Am I doing this correctly?
The same approach has also been taken for JMS Topic
.
© Stack Overflow or respective owner