springboot rabbitMq延迟队列实现

项目背景:

根据订单不同的事件做相对应的业务处理。比如:非预付费的订单48小时自动现金结清逻辑处理。经讨论决定使用rabbitMq的延迟队列方式实现。

什么是rabbitMq延迟队列:

延迟队列存储的对象肯定是对应的延时消息,所谓”延时消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。

延迟队列原理:

Rabbitmq本身是没有延迟队列的,只能通过Rabbitmq本身队列的特性来实现,实现延迟队列,需要使用Rabbitmq的死信交换机(Exchange)和消息的存活时间TTL(Time To Live)。

java代码实现:

1、pom引进依赖

2、RabbitMqConfig基础配置:

对于springboot项目,可在application.yml配置即可,启动时候会自动读取相对应的信息配置。本文采用文件加载方式。配置rabbitMq连接信息如下:

需求需要消息处理每次需要多少间隔时间或者最大重试次数等,配置如下所示:

3、延迟队列配置,包括建立死信交换机,死信队列绑定

4、TTL队列中的消息过期后,转发目标队列;qeue为队列名称,data为message消息,ttl为设置的过期时间。

5、监听转发队列,进行业务处理

多延迟队列实现:

对于需要配置多个延迟队列,只需要配置多个DelayXXXConfig文件即可。

rabbitMq页面配置效果:

结论:

根据延迟时间配置达到相对应的延迟效果。

本文只记录描述rabbitMq延迟队列的实现方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容