内部链接网站大全,网站按钮设计成什么颜色原因,备案网站内容简介,银川制作网站文章目录 一、背景二、环境准备三、项目使用1、业务需求#xff1a;2、实现原理3、代码实现3.1、生产端——消息发送3.2、消费端——延迟消息监听 四、保证消息消费成功 一、背景
避免用户未付款订单占用库存资源。 二、环境准备
下载安装RocketMQSpringBoot整合RocketMQ——… 文章目录 一、背景二、环境准备三、项目使用1、业务需求2、实现原理3、代码实现3.1、生产端——消息发送3.2、消费端——延迟消息监听 四、保证消息消费成功 一、背景
避免用户未付款订单占用库存资源。 二、环境准备
下载安装RocketMQSpringBoot整合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) {MessageString 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 RocketMQListenerString {Overridepublic void onMessage(String msg) {System.out.println(接收到的延迟消息msg);//todo 自定义义务处理。//逻辑删除该订单数据}
}四、保证消息消费成功
rocketmq-spring-boot-starter在监听消息就实现了自动提交ack。 RocketMQListener的onMessage方法不抛异常都会自动提交ack。 抛出异常则进行重试。