RabbitMQ在Linux下载安装及部署
RabbitMQ介绍
RabbitMQ
是一个开源的消息队列(MQ)
- 最初由Rabbit Technologies开发,并使用
Erlang
编程语言编写。 - 它实现了高级消息队列协议(AMQP),是一个功能丰富、灵活可靠的消息中间件。
安装环境
PS:RabbitMQ支持的版本及环境,新旧版本是有差异的,先检查一下系统环境是否支持安装安装的版本
文章的安装环境:
- 系统版本:Linux CentOS Stream 8 64位
- 内核:4.18.0-348.7.1.el8_5.x86_64
- Erlang版本:erlang-26.2.2-1.el8.x86_64.rpm
- RabbitMQ版本:rabbitmq-server-3.13.0-1.el8.noarch.rpm
1 | 查看Linux系统版本 |
Erlang的安装下载
下载Erlang
RabbitMQ
开发语言是Erlang
,安装RabbitMQ需要Erlang环境,所以需要先安装Erlang
【RabbitMQ和Erlang版本对照表】【Erlang 介绍地址】【Erlang 安装地址】【极简版Erlang 安装地址】
根据RabbitMQ和Erlang版本对照表
,下载合适版本的Erlang
安装Erlang
- 将下载好的Erlang RPM安装包上传到Linux上
博主根据自己的版本下载的rpm包:
erlang-26.2.2-1.el8.x86_64.rpm
ps:
/usr/local/erlang
是博主自己创建存放rpm包的路径,所以博主将下载好的rpm包上传到该路径下了 - 执行命令
1
2
3rpm -Uvh erlang-26.2.2-1.el8.x86_64.rpm
sudo yum install erlang - 验证是否安装成功
1
erl
- 查询安装位置
1
whereis erlang
安装Erlang(已废弃)
安装Erlang(已废弃)
1 | 1.安装Erlang编译依赖 |
RabbitMQ的安装下载
方式一:普通Linux下安装
下载RabbitMQ
- 安装插件
1
2安装依赖socat插件
yum install -y socat - 创建RabbitMQ文件夹
1
2
3cd /usr/local
mkdir rabbitmq - 上传服务器
将下载好的
rabbitmq-server
的rpm包
上传到/usr/local/rabbitmq
下 - 解压
1
rpm -Uvh rabbitmq-server-3.13.0-1.el8.noarch.rpm
- 安装
1
yum install -y rabbitmq-server
- 启动RabbitMQ服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14启动rabbitmq
systemctl start rabbitmq-server
查看rabbitmq状态
systemctl status rabbitmq-server
设置rabbitmq服务开机自启动
systemctl enable rabbitmq-server
关闭rabbitmq服务
systemctl stop rabbitmq-server
重启rabbitmq服务
systemctl restart rabbitmq-server - 安装管理界面
1
2打开RabbitMQWeb管理界面插件
rabbitmq-plugins enable rabbitmq_management - 访问验证
ip+端口进行浏览器访问:http://xxx.xxx.xxx.xxx:15672
账号密码默认:guest guest - 遇到问题
- 使用默认的guest账密登录,会出现提示:
User can only log in via localhost
使用默认的guest账密登录,会出现提示:
User can only log in via localhost
原因:因为RabbitMQ
禁止使用guest/guest
权限通过除localhost
外的访问,所以需要新增一个远程登录用户- 创建一个新用户,并赋予角色权限(拿
admin
为例)1
2
3
4
5
6创建用户
rabbitmqctl add_user admin '123456'
设置用户管理员角色
rabbitmqctl set_user_tags admin administrator
设置权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" - 通过新创建的用户登录即可
- 创建一个新用户,并赋予角色权限(拿
- 使用默认的guest账密登录,会出现提示:
方式二:Docker下安装
- 搜索rabbitmq镜像
1
docker search rabbitmq
- 下载镜像
1
docker pull rabbitmq:3.13-management
- 查看已经下载的镜像
1
docker images
- 根据下载的镜像创建和启动容器
1
2
3docker run -d --hostname rabbitmq --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq:3.13-management
或
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management - 查看正在运行的容器
1
docker ps
- 进入rabbitmq容器内部
1
docker exec -it 容器id /bin/bash
- 运行rabbitmq
1
rabbitmq-plugins enable rabbitmq_management
- 访问验证
ip+端口进行浏览器访问:http://xxx.xxx.xxx.xxx:15672
账号密码默认:guest guest - 退出rabbitmq容器内部
1
exit
如果想删除镜像(分三步顺序执行:停容器 > 删容器 > 删镜像)
1 | 停用容器:docker stop 容器id |
属性 | 含义 |
---|---|
-d |
后台运行容器 |
--name |
指定容器名 |
-v |
映射目录或文件 |
--rm |
退出容器时会自动将其删除 |
-it |
打开一个交互式的终端 |
-p |
指定服务运行的端口 5672:应用访问端口 15672:控制台Web端口号 |
--hostname |
主机名 RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名 |
RabbitMQ常见命令
Linux
直接在Linux上安装的RabbitMQ,常见操作命令如下
1 | xxx |
Dokcer
通过Docker安装的RabbitMQ,常见操作命令如下
首先需要先进入 RabbitMQ 容器内部
,才能继续执行rabbitmqctl
命令
1 | 进入容器内部 |
内容补充
RabbitMQ角色(Tag)
角色 | Tag标识 | 功能 |
---|---|---|
超级管理员 | administrator | 可登陆管理控制台(启用management plugin的情况下), 可查看所有的信息,并且可以对用户,策略(policy)进行操作 |
监控者 | monitoring | 可登陆管理控制台(启用management plugin的情况下), 同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等),可以操作exchange、queue,无法对策略进行管理 |
策略制定者 | policymaker | 可登陆管理控制台(启用management plugin的情况下), 可以操作exchange、queue,同时可以对policy进行管理 |
普通管理者 | management | 仅可登陆管理控制台(启用management plugin的情况下), 可以操作exchange、queue,无法看到节点信息,也无法对策略进行管理 |
模仿者 | Impersonator | 不能登录后台,通常就是普通的生产者和消费者 |
其他 | none | 无法登陆管理控制台 |
RabbitMQ命名规范
Queue设计 | Exchange设计 | Routing-key 设计 |
---|---|---|
MQ.{模块名}.{功能名}.[业务名1].[业务名2]… | EX.{交换机类型}.{模块名}.{功能名}.[业务名1].[业务名2]… | RK.{模块名}.{接收模块名}.{功能名}.[业务名1].[业务名2]… |
示例:MQ.PAY.ORDER.UNION.OFFLINE (支付模块银联线下支付消息 发送给订单服务) |
示例:EX.TOPIC.PAY.UNION.OFFLINE (支付模块银联线下支付) |
示例:RK.PAY.UNION.OFFLINE (支付模块银联线下支付) |