博客博客
  • 介绍
  • 链表反转
  • 排序算法
  • 二叉树

    • 介绍
    • 深度算法
  • 加密算法

    • 非对称加密
    • 摘要算法
    • 对称加密
  • 激活Windows 11
  • ASP.NET Core 健康检查
  • 获取程序集根目录
  • 闭包
  • CSS 单位指南:CSS em、rem、vh、vw 等详解
  • 自定义Code First约定
  • .NET安装本地化的智能提示
  • 免费开通域名企业邮箱
  • GRPC
  • Hexo生成github page
  • .Net Core日志管理之Log4net
  • linux下更新jenkins
  • MySQL的四种事务隔离级别
  • 发布NuGet包
  • rimraf命令
  • Ubuntu基础操作
  • Ubuntu安装jenkins
  • Vscode无法执行npm等脚本的问题
  • Json

    • Countries
  • 简介
  • 设计原则
  • 行为型模式

    • 介绍
    • 策略模式
  • 创建型模式

    • 介绍
    • 单例模式
  • 结构型模式

    • 介绍
  • Docker指南

    • 介绍
    • 安装
  • Docker实例

    • 介绍
    • docker安装consul
    • docker安装elasticsearch
    • docker安装gitlab-runner
    • docker安装gitlab
    • docker安装jenkins
    • docker安装kafka
    • docker安装mongo
    • docker安装mysql
    • docker安装nginx
    • docker安装portainer
    • docker安装rabbitmq
    • docker安装redis
    • docker安装teamcity
  • Docker教程

    • Docker命令大全
    • docker nginx添加端口映射
    • docker服务管理
  • Docker-Compose

    • 网络配置
    • service name和container name
  • 世界上的另一个我
  • 计划生育宣传标语
  • IT术语
  • Single is simple, double is trouble
  • 矿泉水、纯净水、天然水究竟有啥区别
  • 联系
  • 捐赠
GitHub
  • 介绍
  • 链表反转
  • 排序算法
  • 二叉树

    • 介绍
    • 深度算法
  • 加密算法

    • 非对称加密
    • 摘要算法
    • 对称加密
  • 激活Windows 11
  • ASP.NET Core 健康检查
  • 获取程序集根目录
  • 闭包
  • CSS 单位指南:CSS em、rem、vh、vw 等详解
  • 自定义Code First约定
  • .NET安装本地化的智能提示
  • 免费开通域名企业邮箱
  • GRPC
  • Hexo生成github page
  • .Net Core日志管理之Log4net
  • linux下更新jenkins
  • MySQL的四种事务隔离级别
  • 发布NuGet包
  • rimraf命令
  • Ubuntu基础操作
  • Ubuntu安装jenkins
  • Vscode无法执行npm等脚本的问题
  • Json

    • Countries
  • 简介
  • 设计原则
  • 行为型模式

    • 介绍
    • 策略模式
  • 创建型模式

    • 介绍
    • 单例模式
  • 结构型模式

    • 介绍
  • Docker指南

    • 介绍
    • 安装
  • Docker实例

    • 介绍
    • docker安装consul
    • docker安装elasticsearch
    • docker安装gitlab-runner
    • docker安装gitlab
    • docker安装jenkins
    • docker安装kafka
    • docker安装mongo
    • docker安装mysql
    • docker安装nginx
    • docker安装portainer
    • docker安装rabbitmq
    • docker安装redis
    • docker安装teamcity
  • Docker教程

    • Docker命令大全
    • docker nginx添加端口映射
    • docker服务管理
  • Docker-Compose

    • 网络配置
    • service name和container name
  • 世界上的另一个我
  • 计划生育宣传标语
  • IT术语
  • Single is simple, double is trouble
  • 矿泉水、纯净水、天然水究竟有啥区别
  • 联系
  • 捐赠
GitHub
  • Docker指南

    • 介绍
    • 安装
  • Docker实例

    • 介绍
    • docker安装consul
    • docker安装elasticsearch
    • docker安装gitlab-runner
    • docker安装gitlab
    • docker安装jenkins
    • docker安装kafka
    • docker安装mongo
    • docker安装mysql
    • docker安装nginx
    • docker安装portainer
    • docker安装rabbitmq
    • docker安装redis
    • docker安装teamcity
  • Docker教程

    • Docker命令大全
    • docker nginx添加端口映射
    • docker服务管理
  • Docker-Compose

    • 网络配置
    • service name和container name

docker安装rabbitmq

提示

以下内容需要有一定的docker基础,并且需要在已经安装了docker环境中运行

安装

docker pull rabbitmq

这样默认拉取的是latest版本,该版本默认没有管理界面,如果需要管理界面我们可以构建容器后在容器中启用控制台插件

或者直接拉取management版本

docker pull rabbitmq:management

运行

最小化构建

默认latest版本

docker run --name=rabbitmq -p 15672:15672 -p 5672:5672 -d rabbitmq
  • --name=rabbitmq 容器命名为rabbitmq
  • -p 15672:15672 将容器的15672端口映射到宿主机的15672端口,15672是管理界面端口
  • -p 5672:5672 将容器的5672端口映射到宿主机的5672端口,5672是服务端口

如果我们拉取的是management版本,记得在容器后面加上management标签

docker run --name=rabbitmq -p 15672:15672 -p 5672:5672 -d rabbitmq:management

注意

如果构建容器时没有加management标签,系统会默认拉取latest版本后再运行

如果是通过management标签构建的容器,现在我们就可以访问http://宿主机ip:15672打开管理控制台界面了,当然如果环境(阿里云)有端口限制还需要先启用15672端口才行

控制台插件

如果是用默认latest版本构建容器,也是可以打开控制台界面的,进入容器通过命令启用控制台插件,然后重启容器即可

# 进入容器
docker exec -it rabbitmq /bin/bash

# 启用控制台插件
rabbitmq-plugins enable rabbitmq_management

# 退出容器
exit

# 重启容器
docker restart rabbitmq

初始账号

如果运行容器时没有设置账号,rabbitmq会给我们创建一个默认账号:guest/guest

如果不想用默认的guest,可以在构建容器时指定其它账号

docker run --name=rabbitmq \
    -p 15672:15672 -p 5672:5672 \
    --restart=always \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=admin \
    -d rabbitmq
  • -e RABBITMQ_DEFAULT_USER=admin 默认账号为admin
  • -e RABBITMQ_DEFAULT_PASS=admin 默认密码为admin

提示

登录进入控制台后,也可以通过Admin菜单添加、更改账户信息

延迟队列

下载插件

官方插件地址:https://www.rabbitmq.com/community-plugins.html

找到插件rabbitmq_delayed_message_exchange,进入GitHub下载本地RabbitMQ对应的插件版本(下载.ez文件)

下载到本地后将文件放置RabbitMQ的plugins目录/opt/rabbitmq/plugins/

这里用的是docker安装rabbitmq,所以将插件下载到本地,然后放到容器plugins目录

# rabbitmq:容器服务名
docker cp /Users/ludangxin/Downloads/rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez rabbitmq:/opt/rabbitmq/plugins/

进入容器

docker exec -it rabbitmq /bin/bash

查看现有插件列表

rabbitmq-plugins list

# 输出部分内容如下 [E*] = 明确启用; e = 隐式启用
[  ] rabbitmq_amqp1_0                  3.8.3
[  ] rabbitmq_auth_backend_cache       3.8.3
[  ] rabbitmq_auth_backend_http        3.8.3
[  ] rabbitmq_auth_backend_ldap        3.8.3
[  ] rabbitmq_auth_backend_oauth2      3.8.3
[  ] rabbitmq_auth_mechanism_ssl       3.8.3
[  ] rabbitmq_consistent_hash_exchange 3.8.3
[  ] rabbitmq_event_exchange           3.8.3
[  ] rabbitmq_federation               3.8.3
[  ] rabbitmq_federation_management    3.8.3
[  ] rabbitmq_jms_topic_exchange       3.8.3
[E*] rabbitmq_management               3.8.3
[e*] rabbitmq_management_agent         3.8.3
[  ] rabbitmq_mqtt                     3.8.3

启用插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

再次查看安装列表就有了rabbitmq_delayed_message_exchange

安装完毕后登陆RabbitMQ控制台查看,会发现多了个x-delayed-message类型的Exchange

常见问题

点击Channels菜单,提示Stats in management UI are disabled on this node

或者

点击Exchanges菜单,随意点击一个exchange name提示Management API returned status code 500 -

解决办法: 进入容器,进入/etc/rabbitmq/conf.d目录,修改management_agent.disable_metrics_collector.conf文件中的management_agent.disable_metrics_collector = false,然后退出重启容器即可

# 进入容器
docker exec -it rabbitmq /bin/bash

# cd到以下路径
cd /etc/rabbitmq/conf.d/

# 修改 management_agent.disable_metrics_collector = false
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf

# 退出容器
exit

# 重启容器
docker restart rabbitmq

相关链接

RabbitMQ-延迟队列

Prev
docker安装portainer
Next
docker安装redis