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