activemq 例子

1.maven 依赖

  <dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.13.4</version>
  </dependency>

2.测试

  

  1 package com.test.activemq;
  2 
  3 import javax.jms.Connection;
  4 
  5 import javax.jms.ConnectionFactory;
  6 import javax.jms.JMSException;
  7 import javax.jms.Message;
  8 import javax.jms.MessageConsumer;
  9 import javax.jms.MessageListener;
 10 import javax.jms.MessageProducer;
 11 import javax.jms.Queue;
 12 import javax.jms.Session;
 13 import javax.jms.TextMessage;
 14 import javax.jms.Topic;
 15 
 16 import org.apache.activemq.ActiveMQConnectionFactory;
 17 import org.junit.Test;
 18 
 19 public class test {
 20 
 21     /**
 22      * 创建 一对一推送 生产者
 23      * 
 24      * @author changwei
 25      * @date 2018-5-30 下午5:53:14
 26      * @param args
 27      * @throws JMSException
 28      */
 29     @Test
 30     public void TestQueueProducer() throws Exception {
 31         // 1、创建工厂连接对象,需要制定ip和端口号
 32         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
 33                 "tcp://118.25.26.50:61616");
 34         // 2、使用连接工厂创建一个连接对象
 35         Connection connection = connectionFactory.createConnection();
 36         // 3、开启连接
 37         connection.start();
 38         // 4、使用连接对象创建会话(session)对象第一个参数:是否支持事务,如果为true,则会忽略第二个参数,自动被jms服务器设置为SESSION_TRANSACTED。
 39         Session session = connection.createSession(false,
 40                 Session.AUTO_ACKNOWLEDGE);
 41         // 5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
 42         Queue queue = session.createQueue("test-queue2");
 43         // 6、使用会话对象创建生产者对象
 44         MessageProducer producer = session.createProducer(queue);
 45         // 7、使用会话对象创建一个消息对象
 46         TextMessage textMessage = session.createTextMessage("hello11");
 47         // 8、发送消息
 48         producer.send(textMessage);
 49         // 9、关闭资源
 50         producer.close();
 51         session.close();
 52         connection.close();
 53 
 54     }
 55 
 56     /**
 57      * 创建一对一 消费者
 58      * 
 59      * @author changwei
 60      * @date 2018-6-4 上午9:25:05
 61      * @throws Exception
 62      */
 63     @Test
 64     public void TestMQConsumerQueue() throws Exception {
 65         // 1、创建工厂连接对象,需要制定ip和端口号
 66         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
 67                 "tcp://118.25.26.50:61616");
 68         // 2、使用连接工厂创建一个连接对象
 69         Connection connection = connectionFactory.createConnection();
 70         // 3、开启连接
 71         connection.start();
 72         // 4、使用连接对象创建会话(session)对象
 73         Session session = connection.createSession(false,
 74                 Session.AUTO_ACKNOWLEDGE);
 75         // 5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
 76         Queue queue = session.createQueue("test-queue2");
 77         // 6、使用会话对象创建生产者对象
 78         MessageConsumer consumer = session.createConsumer(queue);
 79         // 7、向consumer对象中设置一个messageListener对象,用来接收消息
 80         consumer.setMessageListener(new MessageListener() {
 81 
 82             public void onMessage(Message message) {
 83                 if (message instanceof TextMessage) {
 84                     TextMessage textMessage = (TextMessage) message;
 85                     try {
 86                         System.out.println(textMessage.getText());
 87                     } catch (JMSException e) {
 88                         e.printStackTrace();
 89                     }
 90                 }
 91             }
 92         });
 93         // 8、程序等待接收用户消息
 94         System.in.read();
 95 
 96         // 8、程序等待接收用户消息
 97         // 9、关闭资源
 98         consumer.close();
 99         session.close();
100         connection.close();
101     }
102 
103     /**
104      * 创建 一对多 生产者
105      * 
106      * @author changwei
107      * @date 2018-6-4 上午9:29:23
108      * @throws Exception
109      */
110     @Test
111     public void TestTopicProducer() throws Exception {
112         // 1、创建工厂连接对象,需要制定ip和端口号
113         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
114                 "tcp://118.25.26.50:61616");
115         // 2、使用连接工厂创建一个连接对象
116         Connection connection = connectionFactory.createConnection();
117         // 3、开启连接
118         connection.start();
119         // 4、使用连接对象创建会话(session)对象 第一个参数:是否支持事务,如果为true,则会忽略第二个参数,自动被jms服务器设置为SESSION_TRANSACTED。
120         Session session = connection.createSession(false,
121                 Session.AUTO_ACKNOWLEDGE);
122         // 5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
123         Topic topic = session.createTopic("test-topic");
124         // 6、使用会话对象创建生产者对象
125         MessageProducer producer = session.createProducer(topic);
126         // 7、使用会话对象创建一个消息对象
127         TextMessage textMessage = session.createTextMessage("hello!test-topic");
128         TextMessage textMessage1 = session.createTextMessage("hello!test-topic111");
129         // 8、发送消息
130         producer.send(textMessage);
131         producer.send(textMessage1);
132         //session.commit();
133         // 9、关闭资源
134         producer.close();
135         session.close();
136         connection.close();
137     }
138 
139     /**
140      * 创建一对多 消费者
141      * 
142      * @author changwei
143      * @date 2018-6-4 上午9:28:56
144      * @throws Exception
145      */
146     @Test
147     public void TestTopicConsumer() throws Exception {
148         // 1、创建工厂连接对象,需要制定ip和端口号
149         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
150                 "tcp://118.25.26.50:61616");
151         // 2、使用连接工厂创建一个连接对象
152         Connection connection = connectionFactory.createConnection();
153         // 3、开启连接
154         connection.start();
155         // 4、使用连接对象创建会话(session)对象
156         Session session = connection.createSession(false,
157                 Session.AUTO_ACKNOWLEDGE);
158         // 5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
159         Topic topic = session.createTopic("test-topic");
160         // 6、使用会话对象创建生产者对象
161         MessageConsumer consumer = session.createConsumer(topic);
162         // 7、向consumer对象中设置一个messageListener对象,用来接收消息
163         consumer.setMessageListener(new MessageListener() {
164 
165             public void onMessage(Message message) {
166                 // TODO Auto-generated method stub
167                 if (message instanceof TextMessage) {
168                     TextMessage textMessage = (TextMessage) message;
169                     try {
170                         System.out.println(textMessage.getText());
171                     } catch (JMSException e) {
172                         // TODO Auto-generated catch block
173                         e.printStackTrace();
174                     }
175                 }
176             }
177         });
178 
179         // new BufferedReader(new InputStreamReader(System.in)).readLine();
180         // 8、程序等待接收用户消息
181         System.in.read();
182         // 9、关闭资源
183         consumer.close();
184         session.close();
185         connection.close();
186     }
187     
188 
189 }

猜你喜欢

转载自www.cnblogs.com/bug1024/p/9132522.html