[Java]订单超时自动取消——RocketMQ实现+SpringBoot项目

编程入门 行业动态 更新时间:2024-10-15 14:12:13

[Java]<a href=https://www.elefans.com/category/jswz/34/1767479.html style=订单超时自动取消——RocketMQ实现+SpringBoot项目"/>

[Java]订单超时自动取消——RocketMQ实现+SpringBoot项目

文章目录

  • 一、背景
  • 二、环境准备
  • 三、项目使用
      • 1、业务需求:
      • 2、实现原理
      • 3、代码实现
          • 3.1、生产端——消息发送
          • 3.2、消费端——延迟消息监听
  • 四、保证消息消费成功


一、背景

避免用户未付款订单占用库存资源


二、环境准备

  1. 下载安装RocketMQ
  2. SpringBoot整合RocketMQ——rocketmq-spring-boot-starter

三、项目使用

1、业务需求:

订单超时30分钟,取消订单。

2、实现原理

利用RocketMQ的延迟消息实现。

 rocketMQTemplate.syncSend(主题, 消息, 超时时间, 延迟等级);

RocketMQ默认提供了18个延迟等级,延迟30分钟是等级16。

延迟等级0123456789101112131415161718
延迟时间01s5s10s30s1m2m3m4m5m6m7m8m9m10m20m30m1h2h

3、代码实现

3.1、生产端——消息发送
@Service
public class Server {private RocketMQTemplate rocketMQTemplate;public Server(RocketMQTemplate rocketMQTemplate) {this.rocketMQTemplate = rocketMQTemplate;}/***发送延迟订单消息**/public void sendDelayOrderMsg(String msg) {Message<String> msgBody = MessageBuilder.withPayload(msg).build();rocketMQTemplate.syncSend("delay_order", msgBody , 2000, 16);}
}
3.2、消费端——延迟消息监听
@Component
@RocketMQMessageListener(topic = "delay_order",consumerGroup = "order-consumer", selectorExpression = "*")
public class OrderListner implements RocketMQListener<String> {@Overridepublic void onMessage(String msg) {System.out.println("接收到的延迟消息:"+msg);//todo 自定义义务处理。//逻辑删除该订单数据}
}

四、保证消息消费成功

rocketmq-spring-boot-starter在监听消息就实现了自动提交ack
RocketMQListener的onMessage方法不抛异常都会自动提交ack。
抛出异常则进行重试。

更多推荐

[Java]订单超时自动取消——RocketMQ实现+SpringBoot项目

本文发布于:2023-12-07 09:32:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1670847.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:订单   项目   Java   SpringBoot   RocketMQ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!