需求背景之为什么要有超时关单
原因一:
第三方支付平台的支付连接都是有时效性,创建订单后,需要在一定的时间内支付完成, 比如微信支付、支付宝支付等。当然也可以不关闭订单,做订单二次支付的操作,但业务链路会更加复杂,所以一般会直接关闭
原因二:
电商业务里面还会涉及到商品库存的锁定和释放
所以多数订单业务都是会有这个功能,那如何设计呢?

RabbitMQ死信队列-延迟消息知识点回顾
什么是RabbitMQ的死信队列
没有被及时消费的消息存放的队列
什么是rabbitmq的死信交换机
Dead Letter Exchange(死信交换机,缩写:DLX)当消息成为死信后,会被重新发送到另一个交换机,这个交换机就是DLX死信交换机

消息有哪几种情况成为死信
消费者拒收消息(basic.reject/ basic.nack),并且没有重新入队 requeue=false 消息在队列中未被消费,且超过队列或者消息本身的过期时间TTL(time-to-live) 队列的消息长度达到极限 结果:消息成为死信后,如果该队列绑定了死信交换机,则消息会被死信交换机重新路由到死信队列
什么是延迟队列
一种带有延迟功能的消息队列,Producer 将消息发送到消息队列 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到Consumer 进行消费,该消息即延时消息
业界的一些实现方式:
<
本文通过介绍订单业务中超时关单的需求,探讨了RabbitMQ的死信队列和延迟消息概念。文章详细阐述了RabbitMQ死信交换机和消息成为死信的条件,并讨论了延迟队列的实现方式。最后,通过代码实战展示了如何配置RabbitMQ死信队列、发送延迟消息以及处理关单消费者的流程。
最低0.47元/天 解锁文章
1393





