一 使用docker安装
二 手动安装
RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,即需要先安装部署Erlang环境再安装RabbitMQ环境
RabbitMQ和Erlang的版本对应关系参考:RabbitMQ Erlang Version Requirements — RabbitMQ
下面以CentOS7安装RabbitMQ-3.8.13为例
1 安装Erlang
下载Erlang-22.3.4.12
1 | wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-22.3.4.12-1.el7.x86_64.rpm/download.rpm |
安装
1 | yum localinstall erlang-22.3.4.12-1.el7.x86_64.rpm |
安装完成
2 安装rabbitMQ
下载rabbitMQ-3.8.13
1 | wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.13-1.el7.noarch.rpm/download.rpm |
安装
1 | rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc |
安装完成
三 启动关闭和重启
启动rabbitMQ默认端口**5672
**
1 | systemctl start rabbitmq-server |
关闭rabbitMQ
1 | systemctl stop rabbitmq-server |
重启rabbitMQ
1 | systemctl restart rabbitmq-server |
查看rabbitMQ启动状态
1 | systemctl status rabbitmq-server |
设置开机自启动命令
1 | systemctl enable rabbitmq-server |
四 RabbitMQ Web界面管理
安装web客户端管理插件
1 | rabbitmq-plugins enable rabbitmq_management |
重启服务即可
配置防火墙开放15672端口
rabbitmq有一个默认账号和密码是:guest 。默认情况只能在 localhost本机下访问(见下图),所以需要新增一个远程登录的用户
1 | rabbitmqctl add_user 账号 密码 |
添加成功
设置用户分配操作权限
1 | rabbitmqctl set_user_tags 账号 administrator |
通过http://IP地址:15672
进行Web页面登录,输入账号密码,完成页面访问
五 MQ集群搭建
参考RabbitMQ集群搭建 - 腾讯云开发者社区-腾讯云 (tencent.com)
六 认识RabbitMQ Management
在RabbitMQ Management界面可以看到 RabbitMQ 中的一些基本概念,例如每个菜单分别是:
- Override:整体一览。
- Connections:网络连接,比如一个 TCP 连接。
- Channels:信道,多路复用连接中的一条独立的双向数据流通道。信道是建立在真实的 TCP 连接内地虚拟连接,AMQP 命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,这些动作都是通过信道完成。因为对于操作系统来说建立和销毁 TCP 都是非常昂贵的开销,所以引入了信道的概念,以复用一条 TCP 连接。
- Exchanges:交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。
- Queues:消息队列,用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。
具体后续文章详细学习
在这里进行一些配置方便后续测试
1 创建虚拟主机
2 检查权限
检查刚刚创建的用户是否可以访问该虚拟主机
没有权限点击红框处添加对应虚拟主机
七 简单示例
引入maven依赖
1 | <dependency> |
1 RabbitMQProducer
创建 RabbitMQProducer 类,使用 Channel 发送消息。代码如下:
1 | public class RabbitMQProducer { |
运行测试后发现队列中已有三条测试发送的消息
2 RabbitMQConsumer
创建 RabbitMQConsumer类,使用 Channel 发送消息。代码如下:
1 | // RabbitMQConsumer.java |
可以看到刚刚的消息被成功消费了