Chapter 3 Creating a Simple JMS Application

                           Create a simple JMS application

1.1 Steps to create a JMS application using jmsapi

    1. Need a jms connection factory

    2. Use factory to create jms connection

    3. Open the connection

    4. Create a session by connecting

    5. Get a destination

    6. Create a producer

    7. Create a consumer

    8. Send or receive messages

    9. Close all resources.

   PS: ConnectionFactory, Connection, Destination support concurrent access, Session, MessageProducer, MessageConsumer do not support concurrent access

 

1.2 A simple producer and consumer (point-to-point queue mode queue) example

        Producer:

public class SimpleProducer {
	private static String brokerURL = "tcp://localhost:61616";
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	private static Destination destination = null;
	private static MessageProducer mp = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 destination = session.createQueue("zcf");
    	 mp = session.createProducer(destination);
    	 Message message = session.createTextMessage("hah");
    	 mp.send(message);
    	 
    	 
	}
}

        consumer:

public class SimpleResumer {
	private static String brokerURL = "tcp://localhost:61616";
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 Destination destination = session.createQueue("zcf");
    	 MessageConsumer consumer = session.createConsumer(destination);
    	 Message message = consumer.receive();
    	 TextMessage textMessage = (TextMessage) message;
    	 System.out.println(textMessage.getText());
    	/* ;
    	 mp = session.createProducer(destination);
    	 Message message = session.createTextMessage("hah");
    	 mp.send(message);*/
    	 
    	 
	}
}

     Consumers consume asynchronously:

public class SimpleResumerAsync {
	private static String brokerURL = "tcp://localhost:61616";
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 Destination destination = session.createQueue("zcf");
    	 MessageConsumer consumer = session.createConsumer(destination);
    	 consumer.setMessageListener(new MessageListener() {
			
			@Override
			public void onMessage(Message message) {
				System.out.println(message);
			}
		});

	}
}

 

 

1.3 A simple publish-subscribe model (one-to-many non-persistent) example

     

package com.zcf.activemq.simpleexample;

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.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
/**
 * receive messages asynchronously
 * @author cfzhou
 *
 */
public class SimpleTopicResumerAsync {
	private static String brokerURL = "tcp://localhost:61616";
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 new Thread(new ResumerThread()).start();

	}
   private static  class ResumerThread implements Runnable{

		@Override
		public void run() {
			for(int i = 0 ;i < 3;i++){		    	
				try {
					Destination destination = session.createTopic("topic");					
					MessageConsumer consumer = session.createConsumer(destination);
			    	 consumer.setMessageListener(new MessageListener() {						
						@Override
						public void onMessage(Message message) {
							System.out.println(message);
						}
					});
				} catch (JMSException e) {
					e.printStackTrace ();
				}
			}
			 
		}
    	 
     }
}

 

package com.zcf.activemq.simpleexample;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
/**
 * receive messages asynchronously
 * @author cfzhou
 *
 */
public class SimpleQueueResumerAsync {
	private static String brokerURL = "tcp://localhost:61616";
	private static ConnectionFactory factory= null;
	private static Connection connection= null;
	private static Session session = null;
	
     public static void main(String[] args) throws Exception {
    	 factory = new ActiveMQConnectionFactory(brokerURL);
    	 connection = factory.createConnection();
    	 connection.start();
    	 session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    	 Destination destination = session.createQueue("zcf");
    	 MessageConsumer consumer = session.createConsumer(destination);
    	 consumer.setMessageListener(new MessageListener() {
			
			@Override
			public void onMessage(Message message) {
				System.out.println(message);
			}
		});

	}
}

 

1.1 Steps to create a JMS application using jmsapi     1. You need a jms connection factory     2. Use the factory to create a jms connection     3. Open the connection     4. Create a session through the connection     5. Get a destination     6. Create a producer     7. Create a consumer     8 . Send or receive messages     9. Close all resources. 1.2 A simple producer and consumer (point-to-point queue pattern queue) example 1.3 A simple publish-subscribe pattern (one-to-many non-persistent) example

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326396008&siteId=291194637