rabbitmq延时队列应用

2020-10-17  本文已影响0人  缓慢移动的蜗牛

rabbitmq延时队列(实现定时任务)

场景

比如未付款订单,超过一定时间后,系统自动取消订单并释放占有物品。

常用解决方案

spring的schedule定时任务轮询数据库

缺点

消耗系统内存、增加了数据库的压力、存在较大的时间误差

解决

rabbitmq的消息TTL和死信Exchange结合

消息的TTL(Time To Live)

延时队列实现的二种方式

消息队列流程(示例)

柔性事物--可靠消息+最终一致性方案(异步确保型)

实现:业务处理服务在业务事务提交之前,向实时消息服务请求发送消息,实时消息服务只记录消息数据,而不是真正的发送。业务处理服务在业务事务提交之后,向实时消息服务确认发送。只有在得到发送指令后,实时消息服务才会真正发送。

如何保证消息的可靠性

消息丢失

Rabbit消息ACK配置
待完善

消息重复

消息积压

上一篇下一篇

猜你喜欢

热点阅读