如果只是 Docker Compose 安装 RabbitMQ,推荐直接使用官方镜像。

docker-compose.yml

services:
  rabbitmq:
    image: rabbitmq:4.0-management
    container_name: rabbitmq

    restart: unless-stopped

    hostname: rabbitmq

    ports:
      - "5672:5672"    # AMQP
      - "15672:15672"  # Web管理后台

    environment:
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: 123456
      TZ: Asia/Shanghai

    volumes:
      - ./rabbitmq/data:/var/lib/rabbitmq
      - ./rabbitmq/log:/var/log/rabbitmq

    healthcheck:
      test: ["CMD", "rabbitmq-diagnostics", "check_port_connectivity"]
      interval: 30s
      timeout: 10s
      retries: 5


启动

docker compose up -d

查看容器

docker ps

查看日志

docker logs -f rabbitmq


登录管理后台

浏览器访问

http://服务器IP:15672

例如

http://192.168.1.100:15672

账号

admin

密码

123456


查看插件

进入容器

docker exec -it rabbitmq bash

查看插件

rabbitmq-plugins list

RabbitMQ 官方 management 镜像默认已经启用了:

  • rabbitmq_management

  • rabbitmq_management_agent

  • rabbitmq_web_dispatch

所以一般不用自己开启。


开启 MQTT(可选)

如果需要 MQTT:

docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_mqtt

开放端口

ports:
  - "1883:1883"


开启 STOMP(可选)

docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_stomp

开放

ports:
  - "61613:61613"


开启延迟消息插件(推荐)

下载对应版本的

rabbitmq_delayed_message_exchange

放到

./rabbitmq/plugins

compose 增加

volumes:
  - ./rabbitmq/plugins:/plugins

启动后执行

rabbitmq-plugins enable rabbitmq_delayed_message_exchange


常用命令

查看用户

docker exec rabbitmq rabbitmqctl list_users

查看虚拟主机

docker exec rabbitmq rabbitmqctl list_vhosts

查看队列

docker exec rabbitmq rabbitmqctl list_queues

查看交换机

docker exec rabbitmq rabbitmqctl list_exchanges


完整目录结构

project/
├── docker-compose.yml
└── rabbitmq/
    ├── data/
    ├── log/
    └── plugins/


如果你的项目使用的是 x-delayed-message 交换机,那么必须安装 rabbitmq_delayed_message_exchange 插件,否则会报类似错误:

PRECONDITION_FAILED - unknown exchange type 'x-delayed-message'

安装插件

方法一:推荐(自定义 Docker 镜像)

目录结构

rabbitmq/
├── docker-compose.yml
├── Dockerfile
└── plugins/
    └── rabbitmq_delayed_message_exchange-*.ez


Dockerfile

FROM rabbitmq:4-management

COPY plugins/*.ez /plugins/

RUN rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange

--offline 表示在镜像构建时就启用插件,无需容器启动后再执行。


docker-compose.yml

services:
  rabbitmq:
    build: .

    container_name: rabbitmq

    hostname: rabbitmq

    restart: unless-stopped

    ports:
      - "5672:5672"
      - "15672:15672"

    environment:
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: 123456
      TZ: Asia/Shanghai

    volumes:
      - ./data:/var/lib/rabbitmq
      - ./log:/var/log/rabbitmq

启动:

docker compose up -d --build


方法二:直接在运行中的容器安装

下载与你 RabbitMQ 版本完全对应 的 .ez 插件文件,复制到容器:

docker cp rabbitmq_delayed_message_exchange-4.2.0.ez rabbitmq:/plugins/

进入容器:

docker exec -it rabbitmq bash

启用插件:

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

重启:

docker restart rabbitmq

验证:

rabbitmq-plugins list | grep delayed

应看到:

[E*] rabbitmq_delayed_message_exchange

其中 E 表示已启用。


下载插件

插件发布页:

rabbitmq-delayed-message-exchange Releases

请注意,插件版本必须与 RabbitMQ 主版本兼容。例如:

RabbitMQ插件
3.13.xv3.13.x
4.0.xv4.0.x
4.1.xv4.1.x
4.2.xv4.2.0

官方发布页会说明每个插件对应支持的 RabbitMQ 版本。(GitHub)


注意事项

如果你正在使用 RabbitMQ 4.3+,官方已经弃用并归档了 rabbitmq_delayed_message_exchange 插件,推荐考虑新的延迟消息方案,因为旧插件存在架构限制。(RabbitMQ)


我建议先确认你的 RabbitMQ 版本

请执行:

docker exec rabbitmq rabbitmqctl version

或者:

docker images rabbitmq

把输出发给我(例如 3.13.7、4.0.7、4.2.0),我可以直接给你对应版本的 .ez 插件下载地址和完整的 Dockerfile。