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延迟队列的实现方式。

你可能感兴趣的:(springboot rabbitMq延迟队列实现)