要在 Docker 的 RabbitMQ 中启用 rabbitmq_delayed_message_exchange 插件(用于实现延迟消息),推荐以下两种方法:
方法一:使用官方镜像 + 手动启用
启动 RabbitMQ 容器
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672复制插件到容器内
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
进入容器启用插件
docker exec -it rabbitmq
rabbitmq-plugins enable rabbitmq_delayed_message_exchange验证插件是否启用
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插件到docker的RabbitMQ容器的plugins目录下最后启用即可
rabbitmq-plugins enable rabbitmq_delayed_message_exchange插件启用后,即可使用
x-delayed-message类型交换机实现延迟消息。