This example shows you how to send a message to an MDB and then roll back the transaction forcing re delivery
The example will send deploy a simple MDB and demonstrate sending a message and the MDB consuming it
Please refer to JBoss Messaging Quickstart guide to install it in JBoss AS 5
To deploy and start the server, simply type ant deploy
from the example directory
To run the example, simply type ant
from the example directory
To remove the example profile, simply type ant undeploy
from the example directory
** make sure that JBOSS_HOME is set to the Jboss installation directory
jndi.properties
file in the directory config
initialContext = new InitialContext();
Queue queue = (Queue) initialContext.lookup("/queue/testQueue");
ConnectionFactory cf = (ConnectionFactory) initialContext.lookup("/ConnectionFactory");
connection = cf.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
TextMessage message = session.createTextMessage("This is a text message");
messageProducer.send(message);
TextMessage tm = (TextMessage)message;
String text = textMessage.getText();
if(!textMessage.getJMSRedelivered())
{
//Step 11. rollback delivery of message if the first time
System.out.println("message " + text + " received for the first time");
ctx.setRollbackOnly();
}
System.out.println("message " + text + " received for the second time");
finally
block. Closing a JMS connection will automatically close all of its sessions, consumers, producer and browser objects
finally
{
if (initialContext != null)
{
initialContext.close();
}
if (connection != null)
{
connection.close();
}
}