The JMSConsumer.receiveBody() method has a disadvantage: it blocks execution until a message is received from the queue. We can prevent our JMS consumer code from blocking execution by receiving messages asynchronously via an implementation of the javax.jms.MessageListener interface.
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class ExampleMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.print("Received the following message: ");
System.out.println(textMessage.getText());
System.out.println();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
Our main code can now delegate message retrieval to our custom MessageListener implementation:
Our main code can now delegate message retrieval to our custom MessageListener implementation:
jMSConsumer.setMessageListener(new ExampleMessageListener());
No comments:
Post a Comment