VS-JMS-Praktikum/VAR-JMS/src/var/mom/jms/log/ConsumerCallbackNode.java

69 lines
2.0 KiB
Java

package var.mom.jms.log;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class ConsumerCallbackNode implements MessageListener {
private Connection connection;
private Session session;
private MessageConsumer consumer;
public ConsumerCallbackNode() throws NamingException, JMSException {
Context ctx = new InitialContext();
ConnectionFactory factory = (ConnectionFactory) ctx.lookup("ConnectionFactory");
Destination queue = (Destination) ctx.lookup(Conf.QUEUE);
connection = factory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
consumer = session.createConsumer(queue);
consumer.setMessageListener(this);
connection.start();
}
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String messageText = textMessage.getText();
String priority = textMessage.getStringProperty("Priority");
System.out.println(messageText + " [Priority=" + priority + "]");
}
} catch (JMSException e) {
System.err.println(e);
}
}
public static void main(String[] args) {
long wait = Long.parseLong(args[0]);
ConsumerCallbackNode node = null;
try {
node = new ConsumerCallbackNode();
Thread.sleep(wait);
} catch (InterruptedException | NamingException | JMSException e) {
System.err.println(e);
} finally {
try {
if (node != null && node.consumer != null)
node.consumer.close();
if (node != null && node.session != null)
node.session.close();
if (node != null && node.connection != null)
node.connection.close();
} catch (JMSException e) {
System.err.println(e);
}
}
}
}