当前位置:首页 > 服务端 > ActiveMQ与RabbitMQ安装以及实现

ActiveMQ与RabbitMQ安装以及实现

2022年08月05日 11:36:45服务端4

ActiveMQ

1.下载ActiveMQ

去官方网站下载:http://activemq.apache.org/

2.运行ActiveMQ

解压缩apache-activemq-5.11.1-bin.zip,然后双击apache-activemq-5.11.1\bin\activemq.bat运行ActiveMQ程序。

启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。

3.创建Eclipse项目并运行

创建project:MQ,并导入apache-activemq-5.11.1\lib目录下需要用到的jar文件,项目结构如下图所示:

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记

 

3.1.Sender.java

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

3.2.Receiver.java

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记
 1 package activeMQ;
 2 
 3 import javax.jms.Connection;
 4 import javax.jms.ConnectionFactory;
 5 import javax.jms.Destination;
 6 import javax.jms.MessageConsumer;
 7 import javax.jms.Session;
 8 import javax.jms.TextMessage;
 9 
10 import org.apache.activemq.ActiveMQConnection;
11 import org.apache.activemq.ActiveMQConnectionFactory;
12 
13 public class Receiver {
14     public static void main(String[] args) {
15         // ConnectionFactory :连接工厂,JMS 用它创建连接
16         ConnectionFactory connectionFactory;
17         // Connection :JMS 客户端到JMS Provider 的连接
18         Connection connection = null;
19         // Session: 一个发送或接收消息的线程
20         Session session;
21         // Destination :消息的目的地;消息发送给谁.
22         Destination destination;
23         // 消费者,消息接收者
24         MessageConsumer consumer;
25         connectionFactory = new ActiveMQConnectionFactory(
26                 ActiveMQConnection.DEFAULT_USER,
27                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
28         try {
29             // 构造从工厂得到连接对象
30             connection = connectionFactory.createConnection();
31             // 启动
32             connection.start();
33             // 获取操作连接
34             session = connection.createSession(Boolean.FALSE,
35                     Session.AUTO_ACKNOWLEDGE);
36             // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
37             destination = session.createQueue("FirstQueue");
38             consumer = session.createConsumer(destination);
39             while (true) {
40                 // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
41                 TextMessage message = (TextMessage) consumer.receive(500000);
42                 if (null != message) {
43                     System.out.println("收到消息" + message.getText());
44                 } else {
45                     break;
46                 }
47             }
48         } catch (Exception e) {
49             e.printStackTrace();
50         } finally {
51             try {
52                 if (null != connection)
53                     connection.close();
54             } catch (Throwable ignore) {
55             }
56         }
57     }
58 }
View Code

4.注意事项

  1. 最后接收者跟发送者在不同的机器上测试
  2. 项目所引用的jar最后在ActiveMQ下的lib中找,这样不会出现版本冲突。

5.测试过程

发送消息:ActiveMq 发送的消息1
发送消息:ActiveMq 发送的消息2
发送消息:ActiveMq 发送的消息3
发送消息:ActiveMq 发送的消息4
发送消息:ActiveMq 发送的消息5

 

收到消息ActiveMq 发送的消息1
收到消息ActiveMq 发送的消息2
收到消息ActiveMq 发送的消息3
收到消息ActiveMq 发送的消息4
收到消息ActiveMq 发送的消息5

 

RabbitMQ

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记

1.RabbitMQ环境安装

 

1)下载erlang支持包:http://www.erlang.org/download.html 如图所示:

 

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记

 

2)下载rabbitmq server:http://www.rabbitmq.com/releases/rabbitmq-server/

 

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记

 

下载RabbitMQ client:http://www.rabbitmq.com/releases/rabbitmq-java-client/或者在http://www.rabbitmq.com/java-client.html

 

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记

 

注:由于RabbitMQ 支持erlang、Java和.NET你可以找到不同语言的client支持版本。

 

 

2.配置环境变量

1)、新建变量:ERLANG_HOME=D:\Program Files\erl6.4,然后再path中添加%ERLANG_HOME%\bin;

 

2)、新建变量:RABBITMQ_SERVER=E:\rabbitmq_server-3.5.3,然后再path中添加%RABBITMQ_SERVER%\sbin;

 

3)、运行sbin/rabbitmq-server.bat,启动RabbitMQ服务器

 

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记

 

 RabbitMQ服务端是用AMPQ协议的, 而客户端支持多种语言(Java, .NET,Erlang......Maybe more........)。下面我们准备用java来写一个‘hello world’,测试RabbitMQ安装。 

 

3.RabbitMQ客户端测试

 

   3.1.Sender.java

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记
 1 package rabbitMQ;
 2 
 3 import java.io.IOException;
 4 import com.rabbitmq.client.Channel;
 5 import com.rabbitmq.client.Connection;
 6 import com.rabbitmq.client.ConnectionFactory;
 7 
 8 /**
 9  * 
10  * @author lvkun
11  * 
12  * @having-line---------------------------------------------------------
13  * @filename Send.java
14  * @function TODO
15  * @download <a href=
16  *           'http://www.rabbitmq.com/download.html'>http://www.rabbitmq.com/download.html</a
17  *           >
18  * @start-at 2015年5月24日,下午23:50:40
19  * @having-line---------------------------------------------------------
20  */
21 public class Send {
22     private final static String QUEUE_NAME = "hello";
23 
24     public static void main(String[] args) throws IOException {
25         ConnectionFactory factory = new ConnectionFactory();
26         factory.setHost("localhost");
27         Connection connection = factory.newConnection();
28         Channel channel = connection.createChannel();
29 
30         channel.queueDeclare(QUEUE_NAME, false, false, false, null);
31         String message = "Hello World!";
32         channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
33         System.out.println(" [x] Sent '" + message + "'");
34 
35         channel.close();
36         connection.close();
37     }
38 }
View Code

    3.2.Receiver.java

 

 

 

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记
 1 package rabbitMQ;
 2 
 3 import com.rabbitmq.client.Channel;
 4 import com.rabbitmq.client.Connection;
 5 import com.rabbitmq.client.ConnectionFactory;
 6 import com.rabbitmq.client.QueueingConsumer;
 7 
 8 /**
 9  * 
10  * @author lvkun
11  * 
12  * @having-line---------------------------------------------------------
13  * @filename Receive.java
14  * @function TODO
15  * @download <a href=
16  *           'http://www.rabbitmq.com/download.html'>http://www.rabbitmq.com/download.html</a
17  *           >
18  * @start-at 2015年5月24日,下午23:50:40
19  * @having-line---------------------------------------------------------
20  */
21 public class Receive {
22     private final static String QUEUE_NAME = "hello";
23 
24     public static void main(String[] argv) throws Exception {
25 
26         ConnectionFactory factory = new ConnectionFactory();
27         factory.setHost("localhost");
28         Connection connection = factory.newConnection();
29         Channel channel = connection.createChannel();
30 
31         channel.queueDeclare(QUEUE_NAME, false, false, false, null);
32         System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
33 
34         QueueingConsumer consumer = new QueueingConsumer(channel);
35         channel.basicConsume(QUEUE_NAME, true, consumer);
36 
37         while (true) {
38             QueueingConsumer.Delivery delivery = consumer.nextDelivery();
39             String message = new String(delivery.getBody());
40             System.out.println(" [x] Received '" + message + "'");
41         }
42     }
43 }
View Code

 

启动客户端程序测试效果图:

ActiveMQ与RabbitMQ安装以及实现 _ JavaClub全栈架构师技术笔记

 

作者:吕坤
来源链接:https://www.cnblogs.com/lvk618/p/4526331.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/17564.html

分享给朋友:

“ActiveMQ与RabbitMQ安装以及实现” 的相关文章

RabbitMQ配置SSL

RabbitMQ配置SSL

引言 主要介绍了如何通过Docker安装RabbitMQ并配置SSL;配置成功之后给出了SpringBoot和Python集成的例子。 生成证书 $ git clone https://github.com/Berico-Technol...

RabbitMQ基本特性

RabbitMQ基本特性

1.互联网大厂为什么选择RabbitMQ? 2.RabbitMQ的高性能之道是如何做到的? 3.什么是AMQP高级协议? 4.AMQP核心概念是什么? 5.RabbitMQ整体架构模型是什么样子? 6.RabbitMQ消息是如何流...

消息中间件RabbitMQ学习笔记---RabbitMQ简介

消息中间件RabbitMQ学习笔记---RabbitMQ简介

消息中间件RabbitMQ学习笔记—RabbitMQ简介 1.RabbitMQ简介 RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信...

rabbitmq权限配置

关于rabbitmq权限的几点: rabbitmq的权限控制通过两层来实现,一是vhost的权限,二是确认有权限访问vhost后,对vhost内资源的权限控制(配置,读,写)   1.默认...

rabbitmq 启动异常

问题点说明:今天早上,开发人员反映Rabbitmq有问题,我试着登录页面访问http://IP:15672,出现了报错信息,因为当时忙着处理,报错页面没有截下来。 后面想重启一下Rabbitmq看能不能解决问题,发现居然重启不了,然后查看了下日志信息,找到了Ra...

Docker部署RabbitMQ

Docker部署RabbitMQ

【前言】 Docker : Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in...

rabbitmq删除队列

作者:吴业亮 博客:http://blog.csdn.net/wylfengyujiancheng 从github下载rabbitmqadmin # wget https://raw.githubusercontent.com/rabb...

RabbitMq的一些概念,持久化、队列排他、自动删除、消息确认机制、消息ACK、消费消息的模式

一、队列持久化的概念 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库。 二、排他 简单理解就是在连接关闭时是否会删除队列...

RabbitMQ理解

RabbitMQ理解

RabbitMQ 1.什么是MQ MQ:(Message Queue)消息队列 对列:(Queue)简单的说 就是一种数据结构 先进先出 (Redis list) 消息队列:简单的说就是用来进行消息传输的 消...

rabbitmq面试题

rabbit面试题 1.什么是rabbitmq 采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦 2.为什么要使用rabbitmq 1.在分布式系统下具备异步,削峰...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。