public void run( ) {
QueueConnection queueConnection = null;
QueueSession session = null;
QueueReceiver receiver = null;
Queue queue = null;
Message message = null;
try {
try {
queueConnection = connectionFactory.createQueueConnection( );
// create a transacted session
session = queueConnection.createQueueSession( TRANSACTED_RECEIVE, QueueSession.AUTO_ACKNOWLEDGE );
queue = session.createQueue(TEST_QUEUE_NAME);
receiver = session.createReceiver( queue );
// start the connection
queueConnection.start( );
logger.info( "Receiver " + Thread.currentThread().getName() + " connected." );
// start receive loop
while( ! ( shouldStop.get() || Thread.currentThread().isInterrupted()) ) {
try {
message = receiver.receive( 200 );
} catch( Exception e) {
//
// ignore interrupted exceptions
//
if( e instanceof InterruptedException || e.getCause() instanceof InterruptedException ) {
/* ignore */
} else {
throw e;
}
}
if( message!=null && this.handler!=null ) {
this.handler.onMessage(message);
}
// commit session on successful handling of message
if( session.getTransacted()) {
session.commit();
}
}
logger.info( "Receiver " + Thread.currentThread().getName() + " shutting down." );
} finally {
if( receiver!=null ) {
try {
receiver.close();
} catch (JMSException e) {
logger.warn(e);
}
}
if( session!=null ) {