RabbitMQ延时队列实现订单关闭

  • 场景
    订单30分钟未支付,系统自动关闭有哪些实现方案?
    1.基于任务调度实现;
    2.基于redis过期key实现;
    3.基于redis延迟队列;
    4.基于MQ的延迟队列;
  • 本次使用RabbitMQ实现一个小demo
    原理:我们在下单后,往MQ投递一个消息,设置其有效期为30分钟,在不设置对应队列的消费者的情况下,该消息将一直不被消费,那么30分钟后,该消息过期会被投递到死信队列,由死信消费者消费,我们就可以在死信消费者根据订单id执行相应的业务逻辑。
  • application.properties中MQ的配置
#配置virtual-host虚拟主机
spring.rabbitmq.virtual-host=test_order_close
#ip地址
spring.rabbitmq.host=127.0.0.1
#用户名  密码
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
#连接端口号
spring.rabbitmq.port=5672

#死信队列
test.dlx.exchange=test_order_dlx_exchange
test.dlx.queue=test_order_dlx_queue
test.dlx.routingKey=dlx

##备胎交换机
test.order.exchange=test_order_exchange
test.order.queue=test_order_queue
test.order.routingKey=test.order
  • 死信的config类
@Component
public class DeadLetterMQConfig {
   

    /**
     * 订单交换机
     */
    @Value("${test.order.exchange}")
    private String orderExchange;

    /**
     * 订单队列
     */
    @Value("${test.order.queue}")
    private String orderQueue;

    /**
     * 订单路由key
     */
    @Value("${test.order.routingKey}")
    private String orderRoutingKey;

    /**
     * 死信交换机
     */
    @Value("${test.dlx.exchange}")
    private String dlxExchange;

    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值