当前位置: 首页 > news >正文

40平米小户型装修效果图/现在的seo1发布页在哪里

40平米小户型装修效果图,现在的seo1发布页在哪里,ftp使用修改wordpress权限,免费的网站cmsRabbitMQ使用延迟消息 1.什么情况下使用延迟消息 延迟消息适用于需要在一段时间后执行某些操作的场景,常见的有以下几类: 1.1. 订单超时取消(未支付自动取消) 场景: 用户下单后,如果 30 分钟内未付款&a…

RabbitMQ使用延迟消息

1.什么情况下使用延迟消息

延迟消息适用于需要在一段时间后执行某些操作的场景,常见的有以下几类:

1.1. 订单超时取消(未支付自动取消)

场景: 用户下单后,如果 30 分钟内未付款,系统需要自动取消订单。

实现方式

  • 订单创建时,发送延迟消息30 分钟后检查订单状态。

  • 若订单仍未支付,则自动取消释放库存

2.支付后延迟发货 🚚

场景: 某些商品需要延迟发货,例如 7 天无理由退款期间不立即发货,等待用户是否申请退款。

实现方式

  • 用户付款后,发送延迟消息7 天后检查订单状态。

  • 如果用户未申请退款,则发货;否则取消发货。

3. 限时活动(抢购、秒杀等)

场景: 某些促销活动(如秒杀、限时抢购)在特定时间开始或结束

实现方式

  • 活动开始前,发送延迟消息,定时开放库存

  • 活动结束前,发送延迟消息,下架商品,停止抢购

2.延迟消息实现

这里使用第一种情况实现(下单未付款,特定时间内取消订单,恢复库存)

1.下载RabbitMQ的延迟消息插件,地址:

Releases · rabbitmq/rabbitmq-delayed-message-exchange

下载完将插件在docker中添加到RabbitMQ的plugins中,然后docker restart rabbitmq重启RabbitMQ

2.在交换机中添加新的交换机,类型中多了一个x-delayed-message,这表示延迟消息插件安装成功

3.使用注解声明延迟消息交换机

定义远驰消息交换机名字、延迟消息队列和routingkey

public interface MqConstants {String DELAY_EXCHANGE_NAME = "trade.delay.direct";String DELAY_ORDER_QUEUE_NAME = "trade.delay.order.queue";String DELAY_ORDER_KEY = "delay.order.query";
}
    /*** 监听延迟队列,如果订单下单未支付,则取消订单,恢复库存* @param orderId*/@RabbitListener(bindings = @QueueBinding(value = @Queue(name = MqConstants.DELAY_ORDER_QUEUE_NAME), //延迟队列名exchange = @Exchange(name = MqConstants.DELAY_EXCHANGE_NAME, delayed = "true"), //延迟交换机名key = MqConstants.DELAY_ORDER_KEY //routingkey))public void listenOrderDelayMessage(Long orderId){// 1.查询订单Order order = orderService.getById(orderId);// 2.检测订单状态,判断是否已支付if(order == null || order.getStatus() != 1){// 订单不存在或者已经支付return;}// 3.未支付,需要查询支付流水状态PayOrderDTO payOrder = payClient.queryPayOrderByBizOrderNo(orderId);// 4.判断是否支付if(payOrder != null && payOrder.getStatus() == 3){// 4.1.已支付,标记订单状态为已支付orderService.markOrderPaySuccess(orderId);}else{// TODO 4.2.未支付,取消订单,回复库存System.out.println("订单未支付,取消订单,回复库存");
//            orderService.cancelOrder(orderId);}}
}

4.发送消息

用户下单完毕后,想延迟消息队列发送消息

//下单完毕后/*** TODO:发送延迟消息,查询10秒后订单的状态,如果没支付,则取消订单,恢复库存*/rabbitTemplate.convertAndSend(MqConstants.DELAY_EXCHANGE_NAME,MqConstants.DELAY_ORDER_KEY,order.getId(),message -> {message.getMessageProperties().setDelay(1000 * 10);//延迟时间10sreturn message;});

通过设置交换机名字和routingkey可以绑定到延迟消息队列

这里设置延迟时间为10s(方便测试),下单10s后会发送消息到延迟消息交换机,然后去判断用户是否支付,如果未支付,则取消订单恢复库存

3.实践

发送下单请求

控制台可以看到,下单到消费消息中间间隔十秒钟,表明我们设置的延迟消息成功

http://www.whsansanxincailiao.cn/news/31944072.html

相关文章:

  • 外包网站开发/百度app安卓版下载
  • 织梦做淘宝客网站视频/全国网站排名
  • 网站开发文案模板/网站seo方法
  • 做网站建设注册商标是多少类/太原网站推广排名
  • wordpress无法用qq邮箱验证/株洲seo优化推荐
  • 电商网站建设推广/网络舆情监测平台
  • 公司网站开发费用记入什么科止/天津外贸seo推广
  • asp网站首页模板/全国疫情高峰时间表最新
  • 苏州规划建设局网站/太原百度快照优化排名
  • 江苏建设人才网查询/百度推广优化师
  • 一个简单的html个人简历代码/西安seo关键词排名
  • 网站怎么做seo关键词/百度广告怎么收费标准
  • 网站上的东西不能复制粘贴/品牌网站建设制作
  • ps上做网站/seo类目链接优化
  • 北京外贸网站建设价格/天门seo
  • 网站制作创业/网站推广网站
  • 临海做网站/怎么做app推广代理
  • 白云区做网站/网络推广的方式
  • 门户网站概念/如何设计推广方案
  • 国外的自建站平台是什么/电商网址
  • 个体户营业执照可以网站备案/百度软件商店
  • 惠州品牌网站建设公司哪里有/今日国内新闻最新消息
  • 基于html5个人网站设计论文/百度地图收录提交入口
  • win系统和mac那个做网站好/友情链接名词解释
  • 专业旅游网站建设/软文推广哪个平台好
  • 临沂网站建设推广/长沙网络优化产品
  • 做网站要多大空间/重庆网站搜索排名
  • 网站左侧浮动代码/竞价托管怎么做
  • 杭州注册公司代办费用/上海seo服务外包公司
  • 制作网站 优帮云/重庆seo推广