RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟
延迟插件的作用:
比如消息的延迟推送、定时任务(消息)的执行。包括一些消息重试策略的配合使用,以及用于业务削峰限流、降级的异步延迟消息机制,都是延迟队列的实际应用场景。
延迟插件的安装:
1. 下载插件:http://www.rabbitmq.com/community-plugins.html
![](https://img.haomeiwen.com/i9167995/871b5c73c8a749d5.png)
2. 在指定目录下载该插件:/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/plugins 目录下执行
wget https://dl.bintray.com/rabbitmq/community-plugins/3.6.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171215-3.6.x.zip
![](https://img.haomeiwen.com/i9167995/b8d288e01fe0b0d3.png)
解压:unzip rabbitmq_delayed_message_exchange-20171215-3.6.x.zip
![](https://img.haomeiwen.com/i9167995/5543c9b8d78021f9.png)
3. 查看所有插件: rabbitmq-plugins list
![](https://img.haomeiwen.com/i9167995/bba6d0a69d41cba8.png)
启动延时插件:rabbitmq-plugins enable rabbitmq_delayed_message_exchange
![](https://img.haomeiwen.com/i9167995/0464c6e9c4740e9a.png)
4. 访问地址: http://{ip}:15672/#/exchanges
在新增交换机这里,发现多了一个类型
![](https://img.haomeiwen.com/i9167995/5f2a5a5894b039f0.png)
![](https://img.haomeiwen.com/i9167995/1cb0bdd1d4aa5c59.png)
![](https://img.haomeiwen.com/i9167995/ab1563d21168b47c.png)
新增一个队列 test.delay.queue
![](https://img.haomeiwen.com/i9167995/9453a21a1186c9f1.png)
交换机绑定队列
![](https://img.haomeiwen.com/i9167995/683465c6638a4efd.png)
交换机绑定队列成功
![](https://img.haomeiwen.com/i9167995/955e8a39d1cca38d.png)
![](https://img.haomeiwen.com/i9167995/4ff68d768c7448f4.png)
![](https://img.haomeiwen.com/i9167995/710f80d0765bfa9c.png)
Java 代码: https://github.com/hmilyos/rabbitmq-common.git delay 分支
首先是配置 application.properties
spring.rabbitmq.addresses=120.79.151.132:5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
spring.rabbitmq.connection-timeout=15000
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.template.mandatory=true
接着是声明交换机、队列、绑定关系
![](https://img.haomeiwen.com/i9167995/a9f1abb4cf858dcc.png)
生产端代码
![](https://img.haomeiwen.com/i9167995/f578f0127b1e3a6e.png)
消费端代码
![](https://img.haomeiwen.com/i9167995/5a6f7c685a472ad6.png)
接口调用
![](https://img.haomeiwen.com/i9167995/f4c7ef0e69c9e5be.png)
启动 springboot 项目,然后上管控台页面 确认交换机、队列、绑定关系是否创建成功了
![](https://img.haomeiwen.com/i9167995/14f3259bc3e52011.png)
![](https://img.haomeiwen.com/i9167995/e38bdebd56a5d397.png)
验证交换机、队列、绑定关系声明创建成功后,
调用测试接口: http://localhost:8030/testDelayMsg?title=this-is-delay-msg 注意看控制台输出
![](https://img.haomeiwen.com/i9167995/5063a85c4f2919c5.png)