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.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class SConsumer {
	public static void main(String[] args) {
		String destName = null;
		String destType = null;
		Context jndiContext = null;
		ConnectionFactory connectionFactory = null;
		Connection connection = null;
		Session session = null;
		Destination dest = null;
		MessageConsumer consumer = null;
		TextMessage message = null;
		if (args.length != 2) {
			System.out.println("Program takes two arguments: " + "<dest_name> <queue|topic>");
			System.exit(1);
		}
		destName = new String(args[0]);
		destType = new String(args[1]);
		System.out.println("Destination name is " + destName + ", type is "
				+ destType);
		try {
			jndiContext = new InitialContext();
		} catch (NamingException e) {
			System.out.println("Could not create JNDI " + "context: "
					+ e.toString());
			System.exit(1);
		}
		try {
			connectionFactory = (ConnectionFactory) jndiContext
					.lookup("jms/QueueConnectionFactory");
			if (destType.equals("queue")) {
				dest = (Queue) jndiContext.lookup(destName);
			} else if (destType.equals("topic")) {
				dest = (Topic) jndiContext.lookup(destName);
			} else {
				throw new Exception("Invalid destination type" + "; must be queue or topic");
			}
		} catch (Exception e) {
			System.out.println("JNDI lookup failed: " + e.toString());
			System.exit(1);
		}
		try {
			connection = connectionFactory.createConnection();
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			consumer = session.createConsumer(dest);
			connection.start();
			Message m;
			while (true) {
				m = consumer.receive();
				if (m instanceof TextMessage) {
					message = (TextMessage) m;
					System.out.println("Reading message: " + message.getText());
				}
			}
		} catch (JMSException e) {
			System.out.println("Exception occurred: " + e.toString());
		} finally {
			if (connection != null) {
				try {
					connection.close();
				} catch (JMSException e) {
					System.err.println("JMSException occured while closing connection");
				}
			}
		}
	}
}