RabbitMQ 中的延迟队列(Delayed Queue)是一种特殊的队列,用于在消息被发送后延迟一段时间再投递给消费者。它在许多场景中非常有用,例如需要定时执行的任务、限流、重试机制等。
使用场景
- 定时任务: 例如发送提醒邮件或通知,确保在特定时间后再执行。
- 限流: 控制请求速率,防止瞬时高并发导致的系统崩溃。
- 重试机制: 在处理失败时,可以将消息延迟后重试,避免立即重试造成的负担。
第一步下载延迟插件
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases
注意:需要根据你自己的 RabbitMQ 服务器端版本选择相同版本的延迟插件,可以在 RabbitMQ 控制台查看:
我这里mq是3.9.13的所以延迟队列插件选择3.9.0
第二步将插件拷贝至容器中
接下来,将上一步下载的插件放到 RabbitMQ 服务器安装目录,如果是 docker,使用一下命令复制:
docker cp 宿主机文件 容器名称或ID:容器目录
注意:这个命令一般手打
第三步进入容器,并查看插件
命令1
docker exec -it rabbitmq /bin/bash
命令2
rabbitmq-plugins list
第四步启动插件并重启容器
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
启动成功
第五步在容器重启完成
我们可以登录RabbitMQ的Web端管理界面,在Exchanges选项卡下,点击Add a new exchange,在Type里面看是否出现了x-delayed-message选项,如下图所示:
表示插件已经安装成功