package de.fhkoeln.activemqexamples;
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;
public class MessageSubscriber extends MessageFunctions implements Runnable, MessageListener {
private Destination destination;
private Session session;
public MessageSubscriber(String topicName) {
super(topicName);
}
public MessageSubscriber() {
super(DEFAULT_TOPIC_NAME);
}
public void init() throws JMSException {
// start the connection
getConnection().setClientID("TestClient");
getConnection().start();
// open session and register MessageListener object
this.session = getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
// this.session.setMessageListener(this);
this.destination = session.createTopic(getTopicName());
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(this);
}
public void shutdown() throws JMSException {
// close the session and connection
session.close();
getConnection().close();
}
public void run() {
System.out.println("-- Listening ...");
// try {
// TopicSubscriber topicSubscriber = session.createDurableSubscriber(
// (Topic) destination, "topic_subscription");
//
// while (true) {
// Message message = topicSubscriber.receive(1000);
// onMessage(message);
// Thread.sleep(2000);
// }
// } catch (JMSException e) {
// e.printStackTrace();
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String receivedText = textMessage.getText();
System.out.println("Received text: " + receivedText);
} else {
System.out.println("Received message: " + message);
}
} catch (JMSException e) {
System.err.println("JMS Exception while receiving message!");
e.printStackTrace();
}
}
}