Docker 安装RabbitMQ
拉取 RabbitMQ 镜像
首先拉取带有管理插件的 RabbitMQ 镜像:
docker pull rabbitmq:management这个镜像自带了 RabbitMQ 和 Web 管理插件,便于后续管理。
启动 RabbitMQ 容器
拉取完成后,使用以下命令启动 RabbitMQ 容器,并设置自定义的用户名和密码:
docker run -d --name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=myuser \
-e RABBITMQ_DEFAULT_PASS=mypassword \
rabbitmq:management参数解释:
-d:让容器在后台运行。--name rabbitmq:给容器起个名字。-p 5672:5672:映射 RabbitMQ 的 AMQP 端口。-p 15672:15672:映射 RabbitMQ 管理插件的 Web 端口。-e RABBITMQ_DEFAULT_USER=myuser:设置默认用户名为myuser。-e RABBITMQ_DEFAULT_PASS=mypassword:设置默认密码为mypassword。
访问管理界面
RabbitMQ 启动后,打开浏览器访问管理界面:
http://<服务器IP>:15672使用以下账号登录:
用户名:
myuser(你设置的用户名)密码:
mypassword(你设置的密码)
查看容器状态
docker ps停止和删除 RabbitMQ 容器
如果你需要停止 RabbitMQ 容器,可以执行:
docker stop rabbitmq如果要删除容器:
docker rm rabbitmq数据持久化(可选)
为了防止容器重启或删除后丢失数据,可以将 RabbitMQ 数据目录挂载到本地磁盘。如下:
docker run -d --name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v /my/local/path/rabbitmq/data:/var/lib/rabbitmq \
-e RABBITMQ_DEFAULT_USER=myuser \
-e RABBITMQ_DEFAULT_PASS=mypassword \
rabbitmq:management这样,RabbitMQ 的数据会保存在本地路径 /my/local/path/rabbitmq/data 中。
延迟消息
在 RabbitMQ 中实现延迟消息(Delayed Message)可以通过几种方式,常见的方案是使用 插件 或 TTL(Time-To-Live) 配置,插件方式要灵活一点,因此我这里只讲插件的方式
下载RabbitMQ Delayed Message Plugin 插件
你可以使用 wget 或直接访问下载链接来下载插件
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v4.0.2/rabbitmq_delayed_message_exchange-4.0.2.ez拷贝插件到容器中
假设你下载的插件文件名是 rabbitmq_delayed_message_exchange-4.0.2.ez ,现在将该插件拷贝到 RabbitMQ 容器中。
docker cp rabbitmq_delayed_message_exchange-4.0.2.ez rabbitmq:/plugins/这里的 rabbitmq 是容器的名称,/plugins/ 是 RabbitMQ 插件目录。
进入容器并启用插件
进入 RabbitMQ 容器:
docker exec -it rabbitmq /bin/bash在容器内启用插件:
rabbitmq-plugins enable rabbitmq_delayed_message_exchange这会启用延迟消息插件
重启 RabbitMQ
启用插件后,最好重启 RabbitMQ 容器,以确保插件生效:
docker restart rabbitmq这样,RabbitMQ 会重启并加载新安装的插件。
验证插件是否启用
docker exec rabbitmq rabbitmq-plugins list如果插件启用了,应该能看到 rabbitmq_delayed_message_exchange 列在启用插件列表中。
常见问题
Q1: 如何查看 RabbitMQ 状态? 你可以通过访问 http://<服务器IP>:15672 来查看 RabbitMQ 的运行状态,或者使用 docker ps 查看容器状态。
Q2: 如何修改默认的用户名和密码? 在启动容器时,通过环境变量设置 RABBITMQ_DEFAULT_USER 和 RABBITMQ_DEFAULT_PASS,如上文所示。