RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息

延迟插件的作用:

    比如消息的延迟推送、定时任务(消息)的执行。包括一些消息重试策略的配合使用,以及用于业务削峰限流、降级的异步延迟消息机制,都是延迟队列的实际应用场景。

延迟插件的安装:

    1. 下载插件:http://www.rabbitmq.com/community-plugins.html

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第1张图片

    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

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第2张图片
下载成功

        解压:unzip rabbitmq_delayed_message_exchange-20171215-3.6.x.zip

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第3张图片
解压成功

    3. 查看所有插件: rabbitmq-plugins list

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第4张图片

    启动延时插件:rabbitmq-plugins enable rabbitmq_delayed_message_exchange

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第5张图片

   4. 访问地址: http://{ip}:15672/#/exchanges

在新增交换机这里,发现多了一个类型

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第6张图片
延迟类型
RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第7张图片
新增一个延迟类型的交换机
RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第8张图片
新增延迟类型交换机成功

新增一个队列  test.delay.queue

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第9张图片
新增一个队列  test.delay.queue

交换机绑定队列

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第10张图片
交换机绑定队列

交换机绑定队列成功

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第11张图片
交换机绑定队列成功
RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第12张图片
在交换机里面发消息
RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第13张图片
验证是否延迟 20 s

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

接着是声明交换机、队列、绑定关系

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第14张图片
声明交换机、队列、绑定关系

生产端代码

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第15张图片
生产端代码

消费端代码

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第16张图片
消费端代码

接口调用

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第17张图片
http接口

启动 springboot 项目,然后上管控台页面 确认交换机、队列、绑定关系是否创建成功了

RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第18张图片
RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息_第19张图片

验证交换机、队列、绑定关系声明创建成功后,
调用测试接口: http://localhost:8030/testDelayMsg?title=this-is-delay-msg   注意看控制台输出

延迟消息发送和接收成功

你可能感兴趣的:(RabbitMQ 延迟队列插件应用 以及 java 代码使用延迟消息)