订单超时处理

  1. 需求
    • 超时未支付的订单需要进行状态修改,改成已结束,并回滚库存数。
  2. 实现思路
    • 使用延迟消息队列(死信队列)实现
    • 在订单创建时发送一个延迟消息,内容为订单号,系统会在限定时间之后取出这个消息然后查询这个消息的支付状态,根据结果做出相应处理。 死信交换机原理.png
  3. 消息的TTL(Time To Live)
    • 消息存活时间。RabbitMQ可以对队列和消息分别设置TTL。对队列设置就是队列没有消费者连着的情况下的保留时间,也可以对每一个单独的消息做单独的设置。超过了这个时间就认为消息死了,成为死信。
  4. 业务逻辑
    1. 使用死信队列监听,超时后根据订单ID查询数据库中的订单信息,判断订单是否存在以及查看支付情况。
      1. 已支付
        • 进行订单状态修改(三湘项目应该不需要)
      2. 未支付
        • 关闭订单,修改状态为未支付但已结束,回滚库存
  5. 操作步骤
    1. 建立死信交换机orderTimeOutExchange
    2. 创建队列orderTimeOutQueue
    3. 绑定交换机与队列
    4. 创建队列orderCreateQueue,设置TTL,绑定死信交换机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值