代码改变世界

ActivityMQ入门笔记

2018-03-29 22:54  假的小胖子  阅读(4553)  评论(0)    收藏  举报

1.下载ActivityMQ   

    官方网站:http://activemq.apache.org/download.html 

    我下载的是ActiveMQ 5.15.3 Release版 

2.运行ActivityMQ

   解压apache-activemq-5.15.3-bin.zip   进入该文件夹的bin目录

   有两种方式启动ActivityMQ服务

   2.1在bin目录下用cmd命令activemq start 启动服务,关掉黑窗口服务即停止

   2.1进入bin目录下对应电脑位数的文件夹,64位进入win64,双击InstallService.bat批处理文件安装ActiveMQ服务,然后打开任务管理器启动ActiveMQ服务

    启动服务后打开浏览器输入:http://localhost:8161/admin/  输入默认设置的账户:admin密码admin   

    点击队列(Queues),输入队列名称(Queue Name)FirstQueue,然后点创建(Craete)

3.创建maven项目

   添加一个activemq-all-5.15.3.jar即可,在pom.xml加入

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

结构如图

Producer.java

 1 package com.hushunwei.ActivityMQ;
 2 
 3 import javax.jms.Connection;
 4 import javax.jms.ConnectionFactory;
 5 import javax.jms.DeliveryMode;
 6 import javax.jms.Destination;
 7 import javax.jms.JMSException;
 8 import javax.jms.MessageProducer;
 9 import javax.jms.Session;
10 import javax.jms.TextMessage;
11 
12 import org.apache.activemq.ActiveMQConnection;
13 import org.apache.activemq.ActiveMQConnectionFactory;
14 
15 /**
16  * 
17  * @author 生产者
18  *
19  */
20 public class Producer {
21 
22      //默认连接用户名
23     private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
24     //默认连接密码
25     private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
26     //默认连接地址
27     private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL;
28 
29     public static void main(String[] args) {
30         //连接工厂
31         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
32 
33         try {
34             //连接
35             Connection connection = connectionFactory.createConnection();
36             //启动连接
37             connection.start();
38             //创建session
39             Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
40             //消息目的地
41             Destination destination = session.createQueue("FirstQueue");
42             //消息生产者
43             MessageProducer producer = session.createProducer(destination);
44             //设置不持久化,此处学习,实际根据项目决定
45             producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
46 
47             //发送消息
48             for (int i = 0; i < 5; i++) {
49                 //创建一条文本消息
50                 TextMessage message = session.createTextMessage("ActiveMQ: 这是第 " + i + " 条消息");
51                 //生产者发送消息
52                 producer.send(message);
53             }
54 
55             session.commit();
56             session.close();
57             connection.close();
58         } catch (JMSException e) {
59             e.printStackTrace();
60         } 
61     }
62 }

Consumer.java

 1 package com.hushunwei.ActivityMQ;
 2 
 3 import javax.jms.Connection;
 4 import javax.jms.ConnectionFactory;
 5 import javax.jms.Destination;
 6 import javax.jms.JMSException;
 7 import javax.jms.MessageConsumer;
 8 import javax.jms.Session;
 9 import javax.jms.TextMessage;
10 
11 import org.apache.activemq.ActiveMQConnection;
12 import org.apache.activemq.ActiveMQConnectionFactory;
13 
14 /**
15  * 
16  * @author 消费者
17  *
18  */
19 public class Consumer {
20 
21     //默认连接用户名
22     private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
23     //默认连接密码
24     private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
25     //默认连接地址
26     private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL;
27 
28     public static void main(String[] args) {
29         //连接工厂
30         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
31         try {
32             //连接
33             Connection connection = connectionFactory.createConnection();
34             //启动连接
35             connection.start();
36             //创建session
37             Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
38             //消息目的地
39             Destination destination = session.createQueue("FirstQueue");
40             //消息消费者
41             MessageConsumer consumer = session.createConsumer(destination);
42             while (true) {
43                 TextMessage message = (TextMessage) consumer.receive();
44                 if (message != null) {
45                     System.out.println("接收到消息: " + message.getText());
46                 } else {
47                     break;
48                 }
49             }
50             session.close();
51             connection.close();
52         } catch (JMSException e) {
53             e.printStackTrace();
54         }
55     }
56 }

4.测试结果

先运行Producer(生产者),再运行Consumer(消费者)

结果如图