怎么在 Docker 的 RabbitMQ 中开启 rabbitmq_delayed_message_exchange

作者:Administrator 发布时间: 2026-05-09 阅读量:22 评论数:0

要在 Docker 的 RabbitMQ 中启用 rabbitmq_delayed_message_exchange 插件(用于实现延迟消息),推荐以下两种方法:

方法一:使用官方镜像 + 手动启用

  1. 启动 RabbitMQ 容器

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672
  1. 复制插件到容器内

docker ps
docker cp /proj/software/rabbitmq_delayed_message_exchange-4.1.0.ez dockerid:/plugins

插件下载地址 https://qiniuresources.huaum.com/software/rabbitmq_delayed_message_exchange-4.1.0.ez

请注意 4.1.0 的插件只能支持 4.1.x 版本的 RabbitMQ

  1. 进入容器启用插件

docker exec -it rabbitmq
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
  1. 验证插件是否启用

docker exec -it rabbitmq rabbitmq-plugins list

使用示例(创建延迟交换机)

通过代码或管理界面创建一个类型为 x-delayed-message 的交换机,并设置 x-delayed-type 参数(如 direct),即可发送延迟消息。

Node.js 示例

const amqp = require('amqplib');
async function sendDelayed() {
  const conn = await amqp.connect('amqp://guest:guest@localhost');
  const ch = await conn.createChannel();
  const exchange = 'delayed.exchange';
  await ch.assertExchange(exchange, 'x-delayed-message', {
    arguments: { 'x-delayed-type': 'direct' }
  });
  ch.publish(exchange, 'routing.key', Buffer.from('Hello delayed'), {
    headers: { 'x-delay': 5000 } // 延迟5秒
  });
  console.log('Sent delayed message');
}

总结

  • 安装 RabbitMQ

  • 复制 x-delayed-message 插件到 dockerRabbitMQ 容器的 plugins 目录下

  • 最后启用即可 rabbitmq-plugins enable rabbitmq_delayed_message_exchange

  • 插件启用后,即可使用 x-delayed-message 类型交换机实现延迟消息。

评论