ActiveMQ的入门demo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActiveMQ的入门demo相关的知识,希望对你有一定的参考价值。

 

步骤: 

1 :下载ActiveMQ 

官网:http://activemq.apache.org/

2 :解压AcitveMQ,

根据自己的操作系统选择运行win64或者win32下的activemq.bat,双击运行。注意:千万不能选择bin目录下的activemq.bat,这样会闪退。

我的解压目录为:

技术分享

3:创建Java项目:

引入jar包。注意:不能少了hawtbuf-1.11.jar这个包,这个包是不能缺少的。

目录结构如图:

技术分享

 

4:登录本地的MQ服务:

登录地址:http://localhost:8161/

初始账号以及密码:admin,admin

截图如下:

技术分享

登录后的界面如下:

技术分享

 

技术分享

 

5:代码实现:

Sender.java:

 1 package com.lm.activemq;
 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.MessageProducer;
 8 import javax.jms.Session;
 9 import javax.jms.TextMessage;
10 import org.apache.activemq.ActiveMQConnection;
11 import org.apache.activemq.ActiveMQConnectionFactory;
12 /**
13  * 
14  * @author Wei
15  * @time  2016年12月28日 下午8:37:38
16  * 参考:http://heisetoufa.iteye.com/blog/1908335
17  */
18 public class Sender {
19     private static final int SEND_NUMBER = 5;
20 
21     public static void main(String[] args) {
22         // ConnectionFactory :连接工厂,JMS 用它创建连接
23         ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS
24         // Provider 的连接
25         Connection connection = null; // Session: 一个发送或接收消息的线程
26         Session session; // Destination :消息的目的地;消息发送给谁.
27         Destination destination; // MessageProducer:消息发送者
28         MessageProducer producer; // TextMessage message;
29         // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
30         /*connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
31                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616");*/
32         connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
33                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
34         //打印出用户和密码
35         System.out.println("ActiveMQConnection.DEFAULT_USER:" + ActiveMQConnection.DEFAULT_USER
36                 + ",ActiveMQConnection.DEFAULT_PASSWORD:" + ActiveMQConnection.DEFAULT_PASSWORD);
37         try { // 构造从工厂得到连接对象
38             connection = connectionFactory.createConnection();
39             // 启动
40             connection.start();
41             // 获取操作连接
42             session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
43             // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
44             destination = session.createQueue("foo.bar");
45             // 得到消息生成者【发送者】
46             producer = session.createProducer(destination);
47             // 设置不持久化,此处学习,实际根据项目决定
48             producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
49             // 构造消息,此处写死,项目就是参数,或者方法获取
50             sendMessage(session, producer);
51             session.commit();
52         } catch (Exception e) {
53             e.printStackTrace();
54         } finally {
55             try {
56                 if (null != connection)
57                     connection.close();
58             } catch (Throwable ignore) {
59             }
60         }
61     }
62 
63     public static void sendMessage(Session session, MessageProducer producer) throws Exception {
64         for (int i = 1; i <= SEND_NUMBER; i++) {
65             TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i);
66             // 发送消息到目的地方
67 
68             System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);
69             producer.send(message);
70         }
71     }
72 }

Receiver.java:

 1 package com.lm.activemq;
 2 
 3 
 4 import javax.jms.Connection;
 5 import javax.jms.ConnectionFactory;
 6 import javax.jms.Destination;
 7 import javax.jms.MessageConsumer;
 8 import javax.jms.Session;
 9 import javax.jms.TextMessage;
10 import org.apache.activemq.ActiveMQConnection;
11 import org.apache.activemq.ActiveMQConnectionFactory;
12 /**
13  * 
14  * @author Wei
15  * @time  2016年12月28日 下午8:37:51
16  * 参考:http://heisetoufa.iteye.com/blog/1908335
17  */
18 public class Receiver {
19     public static void main(String[] args) {
20         int i = 0;
21         
22         // ConnectionFactory :连接工厂,JMS 用它创建连接
23         ConnectionFactory connectionFactory;
24         // Connection :JMS 客户端到JMS Provider 的连接
25         Connection connection = null;
26         // Session: 一个发送或接收消息的线程
27         Session session;
28         // Destination :消息的目的地;消息发送给谁.
29         Destination destination;
30         // 消费者,消息接收者
31         MessageConsumer consumer;
32         // connectionFactory = new ActiveMQConnectionFactory(
33         // ActiveMQConnection.DEFAULT_USER,
34         // ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616");
35         connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
36                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
37         try {
38             // 构造从工厂得到连接对象
39             connection = connectionFactory.createConnection();
40             // 启动
41             connection.start();
42             // 获取操作连接
43             session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
44             // 获取session注意参数值 foo.bar 是一个服务器的queue,须在在ActiveMq的console配置
45             destination = session.createQueue("foo.bar");
46             consumer = session.createConsumer(destination);
47             while (true) {
48                 // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
49                 TextMessage message = (TextMessage) consumer.receive();
50                 if (null != message) {
51                     i++;
52                     System.out.println("收到消息" + i +":"+ message.getText());
53                 } else {
54                     break;
55                 }
56             }
57         } catch (Exception e) {
58             e.printStackTrace();
59         } finally {
60             try {
61                 if (null != connection)
62                     connection.close();
63             } catch (Throwable ignore) {
64             }
65         }
66     }
67 }

使用 MQ编辑内容点击send按钮进行发送,

eclipse中Receiver的控制台的输出为:

收到消息17:Enter some text here for the message body...

这里可以编辑发送的内容等。
当然了,也可用过Java代码来进行消息队列的发送。

 

源码:链接:http://pan.baidu.com/s/1hsskzic 密码:8bty

 


以上是关于ActiveMQ的入门demo的主要内容,如果未能解决你的问题,请参考以下文章

activeMQ功能Demo

ActiveMQ入门系列二:入门代码实例(点对点模式)

JMS Activemq实战例子demo

ActiveMQ入门案例-生产者代码实现

ActiveMQ的发布者/订阅者模型示例

ActiveMQ入门系列三:发布/订阅模式