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 twice
Please refer to HornetQ Quickstart guide to install it in JBoss AS 5
To deploy and start the server, simply type ./build.sh deploy
(or build.bat deploy
on windows) from the example directory
To run the example, simply type ./build.sh
(or build.bat
on windows) from the example directory
To remove the example profile, simply type ./build.sh undeploy
(or build.bat undeploy
on windows) 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 objectsfinally { if (initialContext != null) { initialContext.close(); } if (connection != null) { connection.close(); } }