RabbitMQ安装DelayExchange插件实现延迟队列

发布于 2024-07-17
1290

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读

RabbitMQ安装DelayExchange插件实现延迟队列

今日目标

本文旨在讲解如何安装和使用RabbitMQ官方推出的DelayExchange插件,以实现延迟队列功能。延迟队列的应用场景包括延迟发送短信、订单超时取消、会议通知等场景。

1. 安装DelayExchange插件

1.1 Docker安装RabbitMQ

通过Docker运行RabbitMQ容器,使用命令 docker run 设置容器名称、端口映射和默认账号密码。以下是关键参数解读:

  • --hostname:设置容器主机名
  • -p 5672:5672:AMQP通信端口
  • -p 15672:15672:管理界面端口
  • -e RABBITMQ_DEFAULT_USER-e RABBITMQ_DEFAULT_PASS:设置默认用户名和密码

1.2 安装插件

Docker环境下需要下载DelayExchange插件并手动安装。插件下载地址为GitHub上的 3.9版本

2. 插件安装步骤

2.1 下载插件

使用以下命令下载插件到Linux环境:

curl -O -L https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez

2.2 上传插件到Docker容器

将下载的插件文件复制到容器内:

docker cp rabbitmq_delayed_message_exchange-3.9.0.ez :/plugins

2.3 启用插件

进入容器内部执行以下命令启用插件:

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

3. DelayExchange介绍和使用

3.1 插件工作流程

DelayExchange通过声明一个交换机为 delayed 类型实现延迟队列。流程包括接收消息、判断 x-delay 属性、持久化消息并在延迟时间后重新投递。

3.2 使用插件

通过两种方式声明交换机:

  • 注解方式:使用 @RabbitListener 与 @Exchange 设置交换机的类型和属性
  • Bean方式:通过配置类定义交换机、队列和绑定关系

3.3 发送消息

发送消息时需携带 x-delay 属性指定延迟时间:

Message message = MessageBuilder
    .withBody("hello, delay message".getBytes(StandardCharsets.UTF_8))
    .setHeader("x-delay", 10000) // 延迟10秒
    .build();
rabbitTemplate.convertAndSend("delay.direct", "delay", message, correlationData);

3.4 测试

通过浏览器访问 http://localhost:8888/publisher/delay/ 测试延迟队列功能。

总结

实现延迟队列插件的步骤包括:

  1. 安装DelayExchange插件
  2. 声明交换机并设置 delayed 属性为 true
  3. 发送消息时添加 x-delay 属性

本文详细介绍了基于Docker安装和使用DelayExchange插件的完整流程和测试方法。

springboot葵花宝典

主要分享JAVA技术,主要包含SpringBoot、SpingCloud、Docker、中间件等技术,以及Github开源项目

274 篇文章
浏览 245.9K

还在用多套工具管项目?

一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。

加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线