JMS 

 

Connection : 

 

        Context jndiContext = null;

 

        try {

            jndiContext = new InitialContext();

        } catch (NamingException e) {

            System.out.println("Could not create JNDI API context: " +

                e.toString());

            System.exit(1);

        }

 

        /*

         * Look up connection factory and destination.  If either

         * does not exist, exit.  If you look up a

         * TopicConnectionFactory or a QueueConnectionFactory,

         * program behavior is the same.

         */

        ConnectionFactory connectionFactory = null;

        Destination dest = null;

 

        try {

            connectionFactory =

                (ConnectionFactory) jndiContext.lookup("jms/ConnectionFactory");

            dest = (Destination) jndiContext.lookup(destName);

        } catch (Exception e) {

            System.out.println("JNDI API lookup failed: " + e.toString());

            e.printStackTrace();

            System.exit(1);

        }

 

 

 

 

Msg Producer : 

 

 

        Connection connection = null;

        MessageProducer producer = null;

 

        try {

            connection = connectionFactory.createConnection();

 

            Session session =

                connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            producer = session.createProducer(dest);

 

            TextMessage message = session.createTextMessage();

            for (int i = 0; i < NUM_MSGS; i++) {

                message.setText("This is message " + (i + 1));

                System.out.println("Sending message: " + message.getText());

                producer.send(message);

            }

 

            /*

             * Send a non-text control message indicating end of

             * messages.

             */

            producer.send(session.createMessage());

        } catch (JMSException e) {

            System.out.println("Exception occurred: " + e.toString());

        } finally {

            if (connection != null) {

                try {

                    connection.close();

                } catch (JMSException e) {

                }

            }

        }

 

Asynchronous Consumer : 

 

public class TextListener implements MessageListener {

    /**

     * Casts the message to a TextMessage and displays its text.

     *

     * @param message     the incoming message

     */

    public void onMessage(Message message) {

        TextMessage msg = null;

 

        try {

            if (message instanceof TextMessage) {

                msg = (TextMessage) message;

                System.out.println("Reading message: " + msg.getText());

            } else {

                System.out.println("Message is not a TextMessage");

            }

        } catch (JMSException e) {

            System.out.println("JMSException in onMessage(): " + e.toString());

        } catch (Throwable t) {

            System.out.println("Exception in onMessage():" + t.getMessage());

        }

    }

 

Usage of TextListener: 

 

        Connection connection = null;

        Session session = null;

        Destination dest = null;

        MessageConsumer consumer = null;

 

        try {

            connection = connectionFactory.createConnection();

            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            consumer = session.createConsumer(dest);

            listener = new TextListener();

            consumer.setMessageListener(listener);

            connection.start();

 

        } catch (JMSException e) {

            System.out.println("Exception occurred: " + e.toString());

        } finally {

            if (connection != null) {

                try {

                    connection.close();

                } catch (JMSException e) {

                }

            }

        }

 

 

Synchronous Consumer : 

 

        Connection connection = null;

        Session session = null;

        Destination dest = null;

        MessageConsumer consumer = null;

 

        try {

            connection = connectionFactory.createConnection();

            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            consumer = session.createConsumer(dest);

            connection.start();

 

            while (true) {

                Message m = consumer.receive(1);

 

                if (m != null) {

                    if (m instanceof TextMessage) {

                        message = (TextMessage) m;

                        System.out.println("Reading message: " +

                            message.getText());

                    } else {

                        break;

                    }

                }

            }

        } catch (JMSException e) {

            System.out.println("Exception occurred: " + e.toString());

        } finally {

            if (connection != null) {

                try {

                    connection.close();

                } catch (JMSException e) {

                }

            }

        }