Ubuntu中安装RabbitMQ

简介

消息队列一般用于系统间对接,能够降低系统耦合度。通过将消息的发送和接收分离来实现应用程序的异步和解耦。你可以使用消息队列实现:

  • 数据分发
  • 非阻塞操作或推送通知(如邮件、短信提醒等)
  • 实现发布/订阅,异步处理
  • 工作队列

RabbitMq作为一款消息队列产品,它由Erlang语言开发,实现AMQP(高级消息队列协议)的开源消息中间件。

应用场景

  1. 异步处理
    场景说明:用户注册后,注册信息写入数据库,再发邮件、短信通知。但后两项并非必须,传统做法:数据写入->发送短信->发送邮件->返回给用户。用户等待所有任务完成。
    引入rabbitmq:可以将短信通知、邮件通知这两个非必要的任务写入到消息队列,再由专门的任务处理程序去读取消息发送通知。用户等待时间变成写入数据库时间+写入消息队列时间。

  2. 应用解耦
    网上购物,用户提交订单后,订单系统需要通知库存系统。传统做法,订单系统直接调用库存系统api。当库存系统出现故障,则订单失效。
    一如rabbitmq:订单系统完成持久化,将消息写入消息队列。库存系统订阅消息队列中的订单,库存系统故障了,也不会导致订单丢失。恢复后可以从消息队列继读取订单处理。

  3. 流量削峰
    前端加入消息队列。大批量用户请求到达后,写入消息队列,并设置最大阈值。超过该阈值的请求丢弃返回错误给客户端。系统只需要从消息队列中取正常的请求来进行处理即可。

安装

安装环境:Ubuntu 20.04,使用如下命令安装。

sudo apt install rabbitmq-server
systemctl status rabbitmq-server         #检查状态
service rabbitmq-server status          #检查状态

下面是启动后,查看状态的输出。

● rabbitmq-server.service - RabbitMQ Messaging Server
     Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-12-21 14:28:04 CST; 4min 24s ago
   Main PID: 94216 (beam.smp)
     Status: "Initialized"
      Tasks: 85 (limit: 4611)
     Memory: 56.2M
     CGroup: /system.slice/rabbitmq-server.service
             ├─94212 /bin/sh /usr/sbin/rabbitmq-server
             ├─94216 /usr/lib/erlang/erts-9.2/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K tr>
             ├─94309 /usr/lib/erlang/erts-9.2/bin/epmd -daemon
             ├─94445 erl_child_setup 65536
             ├─94465 inet_gethost 4
             └─94466 inet_gethost 4

Dec 21 14:28:01 pc-ubuntu systemd[1]: Starting RabbitMQ Messaging Server...
Dec 21 14:28:04 pc-ubuntu systemd[1]: rabbitmq-server.service: Supervising process 94216 which is not our child. We'll >
Dec 21 14:28:04 pc-ubuntu systemd[1]: Started RabbitMQ Messaging Server.
Dec 21 14:28:05 pc-ubuntu systemd[1]: rabbitmq-server.service: Supervising process 94216 which is not our child. We'll >

下面是一些常用管理命令,包括启用、停用、重启。

sudo service rabbitmq-server start       #启用
sudo service rabbitmq-server stop        #停用
sudo service rabbitmq-server restart     #重启

停用后,再次查看状态,输出如下。重点查看Active后面的内容,此时为inactive(dead).

● rabbitmq-server.service - RabbitMQ Messaging Server
     Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2021-12-21 14:33:36 CST; 9s ago
    Process: 95123 ExecStop=/usr/sbin/rabbitmqctl stop (code=exited, status=0/SUCCESS)
   Main PID: 94216
     Status: "Initialized"

Dec 21 14:28:01 pc-ubuntu systemd[1]: Starting RabbitMQ Messaging Server...
Dec 21 14:28:04 pc-ubuntu systemd[1]: rabbitmq-server.service: Supervising process 94216 which is not our child. We'll >
Dec 21 14:28:04 pc-ubuntu systemd[1]: Started RabbitMQ Messaging Server.
Dec 21 14:28:05 pc-ubuntu systemd[1]: rabbitmq-server.service: Supervising process 94216 which is not our child. We'll >
Dec 21 14:33:35 pc-ubuntu systemd[1]: Stopping RabbitMQ Messaging Server...
Dec 21 14:33:36 pc-ubuntu rabbitmq[95131]: Stopping and halting node 'rabbit@pc-ubuntu'
Dec 21 14:33:36 pc-ubuntu systemd[1]: rabbitmq-server.service: Killing process 94216 (beam.smp) with signal SIGKILL.
Dec 21 14:33:36 pc-ubuntu systemd[1]: rabbitmq-server.service: Succeeded.
Dec 21 14:33:36 pc-ubuntu systemd[1]: Stopped RabbitMQ Messaging Server.

开启Web管理

sudo rabbitmq-plugins enable rabbitmq_management

注意,执行上面的命令时,要确保rabbitmq在运行状态中。
执行完后,在浏览器中输入http://localhost:15672 并使用guest/guest 作为用户名密码登录。

rabbitmqweb管理

用户管理命令

sudo rabbitmqctl list_users #列出用户
sudo rabbitmqctl add_user admin adminpassword   #添加用户
sudo rabbitmqctl set_user_tags admin administrator #给用户添加角色
sudo rabbitmqctl delete_user admin  #删除用户

给用户配置VirtualHost中的读写权限。使用set_permissions命令来将rabbitadmin这个用户赋予/这个虚拟主机的读、写、配置权限。rabbitmq安装好后,会默认有这个/虚拟主机的。通过Web管理端可以看见,guest用户对其有所有权限。通过下面命令,将我们刚才创建的rabbitadmin也赋权过去。

sudo rabbitmqctl set_permissions -p / rabbitadmin '.*' '.*' '.*'
<think>我们被要求使用中文回答,并且按照给定的格式要求。用户的问题是在Ubuntu 20.04上安装RabbitMQ。 根据提供的引用,我们可以总结出几种安装方法,包括离线安装、通过Docker安装以及通过添加存储库安装。由于用户没有指定具体方式,我们将提供两种常见方式:通过添加官方存储库安装(在线)和通过Docker安装。 另外,注意引用中提供了离线安装指南,但用户没有明确要求离线,所以我们主要提供在线安装和Docker安装的步骤。 首先,我们参考引用[2]和[4]提供通过添加存储库安装的方法(在线安装): 步骤包括:添加存储库、安装RabbitMQ和Erlang(因为RabbitMQ运行需要Erlang环境)。 其次,参考引用[3]提供通过Docker安装的方法(如果用户已经安装了Docker,这种方法更简单且隔离环境)。 我们分别给出两种方法的步骤。 注意:在安装之前,确保系统是最新的。 方法一:通过添加存储库安装(在线) 1. 更新系统包列表 2. 安装必要的工具(如curl、gnupg等) 3. 添加RabbitMQ的签名密钥 4. 添加RabbitMQ的存储库 5. 更新包列表 6. 安装RabbitMQ 7. 启动并启用RabbitMQ服务 8. 启用管理插件(以便使用Web管理界面) 方法二:通过Docker安装 1. 确保系统已安装Docker(如果没有,先安装Docker) 2. 拉取RabbitMQ镜像(带管理界面的) 3. 运行容器并暴露端口(5672和15672) 下面我们详细说明两种方法。</think>### Ubuntu 20.04 安装 RabbitMQ 步骤 #### 方法一:通过官方存储库安装(推荐) 1. **更新系统包列表** ```bash sudo apt update ``` 2. **安装依赖工具** ```bash sudo apt install -y curl gnupg apt-transport-https ``` 3. **添加 RabbitMQ 签名密钥** ```bash curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null ``` 4. **添加存储库** ```bash echo "deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list echo "deb-src [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main" | sudo tee -a /etc/apt/sources.list.d/rabbitmq.list ``` 5. **安装 RabbitMQ** ```bash sudo apt update sudo apt install -y rabbitmq-server ``` 6. **启动服务并设置开机自启** ```bash sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server ``` 7. **启用管理插件** ```bash sudo rabbitmq-plugins enable rabbitmq_management ``` 8. **创建管理员账户** ```bash sudo rabbitmqctl add_user admin your_password # 替换 your_password sudo rabbitmqctl set_user_tags admin administrator sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" ``` 9. **验证安装** 访问:`http://服务器IP:15672`,使用 `admin` 和密码登录管理界面[^2][^4]。 --- #### 方法二:通过 Docker 安装(容器化部署) 1. **安装 Docker** ```bash sudo apt update sudo apt install -y docker.io sudo systemctl enable --now docker ``` 2. **运行 RabbitMQ 容器** ```bash sudo docker run -d \ --name rabbitmq \ -p 5672:5672 \ -p 15672:15672 \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=your_password \ # 替换 your_password rabbitmq:3-management ``` 3. **验证容器** ```bash sudo docker ps | grep rabbitmq ``` 访问:`http://服务器IP:15672` 使用设置的用户名密码登录[^3]。 --- ### 关键说明 1. **防火墙配置** 确保开放端口: ```bash sudo ufw allow 5672/tcp # AMQP 协议端口 sudo ufw allow 15672/tcp # 管理界面端口 ``` 2. **服务状态检查** ```bash sudo systemctl status rabbitmq-server # 方法一 sudo docker logs rabbitmq # 方法二 ``` 3. **卸载方法** ```bash sudo apt purge rabbitmq-server # 方法一 sudo docker rm -f rabbitmq # 方法二 ``` > **注意**:方法一使用官方存储库安装更稳定,适合生产环境;方法二适合快速测试[^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值