rabbimq订单超时使用延迟队列取消订单

电商系统中,若订单30分钟未付款,系统通过RabbitMQ的延迟队列实现自动取消订单并回滚库存。流程包括消息发送到延迟队列,达到设定时间后转发至消费队列,同时配置了死信队列以确保消息可靠性。
摘要由CSDN通过智能技术生成

一:场景:在电商系统中,订单下单30分钟未付款,系统需要取消订单返回库存。这时候我们需要将消息发送到ttl延迟队列内,当消息到达废弃时间后会自动转发到ttl队列内配置的转发Exchange以及RouteKey绑定的队列内完成消息消费

二:延迟队列流程图
在这里插入图片描述

三:RabbitmqConfig类配置信息
1.声明了普通消息通知队列的相关Exchange、Queue、Binding等配置,将mall.order.cancel.queue队列通过路由键mall.order.cancel绑定到了mall.order.cancel.exchangeName交换上。

2.声明了延时消息通知队列的相关Exchange、Queue、Binding等配置,将mall.order.direct.ttl队列通过mall.order.direct.ttl 路由键绑定到了mall.order.direct.ttl交换上。

3.配置死信队列,这一步非常重要。

/**
     * 订单延迟队列(死信队列)
     */
    @Bean
    public Queue orderTtlQueue() {
   
        return QueueBuilder
                .durable("mall.order.direct.ttl")
                .withArgument("x-dead-letter-exchange", "mall.order.cancel.exchangeName")//到期后转发的交换机
                .withArgument("x-dead-letter-routing-key", "mall.order.cancel")//到期后转发的路由键
                .build();
    }
package com.example.demo.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author:
 * @Description:
 * @Date: Created in 0:31 2020/6/18
 * @Modified By:
 */

@Configuration
@Slf4j
public class RabbitmqConfig {
   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值