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

网站设计专业普洱建设单位网站

网站设计专业,普洱建设单位网站,成全视频免费观看在线看第6季动漫影视大全,用手机制作app1、简述 在支付系统中#xff0c;订单支付的超时自动撤销是一个非常常见的业务场景。通常用户未在规定时间内完成支付#xff0c;系统会自动取消订单#xff0c;释放相应的资源。本文将通过利用 RabbitMQ 的 死信队列#xff08;Dead Letter Queue, DLQ#xff09;来实现…1、简述 在支付系统中订单支付的超时自动撤销是一个非常常见的业务场景。通常用户未在规定时间内完成支付系统会自动取消订单释放相应的资源。本文将通过利用 RabbitMQ 的 死信队列Dead Letter Queue, DLQ来实现支付超时自动撤销功能并详细讲解如何在 Java 中进行实现。 2、什么是死信队列 死信队列是 RabbitMQ 中的一个重要功能当消息在某个队列中变成“死信”时可以被发送到另一个特殊的队列这个队列就是死信队列。消息变成死信的情况有三种 消息被拒绝basic.reject 或 basic.nack并且 requeuefalse。消息的 TTLTime to Live过期。队列达到最大长度无法再存入新消息。 通过死信队列我们可以处理一些特殊的业务逻辑例如订单支付超时自动撤销。 3、实现过程 我们将为每个新创建的支付订单设置一个超时时间例如 30 分钟在订单支付的过程中将订单的消息发送到 RabbitMQ。消息在 RabbitMQ 中设置一定的 TTL生存时间。如果用户在超时时间内完成支付消息会被正常处理如果超时未支付消息会成为“死信”被转移到死信队列从而触发订单撤销的逻辑。 3.1 环境准备 首先在 pom.xml 中添加 RabbitMQ 相关依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency3.2 RabbitMQ 配置 在 application.yml 中添加 RabbitMQ 的连接配置 spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest3.3 配置普通队列和死信队列 我们需要配置两个队列一个是正常的支付订单队列另一个是死信队列。 支付订单队列用于接收支付订单的消息。死信队列接收从支付订单队列中转移过来的超时未处理的消息。 import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class RabbitMQConfig {// 正常交换机Beanpublic DirectExchange orderExchange() {return new DirectExchange(order-exchange);}// 死信交换机Beanpublic DirectExchange deadLetterExchange() {return new DirectExchange(dead-letter-exchange);}// 正常队列Beanpublic Queue orderQueue() {return QueueBuilder.durable(order-queue).withArgument(x-dead-letter-exchange, dead-letter-exchange) // 绑定死信交换机.withArgument(x-dead-letter-routing-key, dead-letter-routing-key) // 死信路由键.withArgument(x-message-ttl, 1800000) // 消息的TTL30分钟.build();}// 死信队列Beanpublic Queue deadLetterQueue() {return QueueBuilder.durable(dead-letter-queue).build();}// 绑定正常队列和交换机Beanpublic Binding orderBinding(Queue orderQueue, DirectExchange orderExchange) {return BindingBuilder.bind(orderQueue).to(orderExchange).with(order-routing-key);}// 绑定死信队列和死信交换机Beanpublic Binding deadLetterBinding(Queue deadLetterQueue, DirectExchange deadLetterExchange) {return BindingBuilder.bind(deadLetterQueue).to(deadLetterExchange).with(dead-letter-routing-key);} }3.4 发送订单支付消息 在订单创建时我们将消息发送到 RabbitMQ设置 TTL超时时间 import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class OrderService {Autowiredprivate RabbitTemplate rabbitTemplate;public void createOrder(String orderId) {// 模拟创建订单的逻辑System.out.println(订单创建成功订单ID orderId);// 发送订单消息到RabbitMQrabbitTemplate.convertAndSend(order-exchange, order-routing-key, orderId);System.out.println(订单消息已发送等待支付超时或支付完成处理...);} }3.5 监听死信队列实现超时自动撤销订单 当订单超时未支付消息将转移到死信队列我们通过监听死信队列实现订单撤销逻辑 import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component;Component public class DeadLetterQueueListener {RabbitListener(queues dead-letter-queue)public void handleExpiredOrder(String orderId) {// 处理超时订单撤销的逻辑System.out.println(订单支付超时自动撤销订单订单ID orderId);// TODO: 更新数据库订单状态为已取消} }4、总结 通过使用 RabbitMQ 的死信队列我们可以轻松实现支付超时自动撤销的功能。具体流程如下 创建订单时将订单消息发送到 RabbitMQ并为消息设置 TTL。如果用户在规定时间内完成支付系统处理消息订单正常完成。如果消息在 TTL 时间内未被处理消息进入死信队列触发自动撤销逻辑。 利用 RabbitMQ 死信队列可以确保超时订单得到及时处理避免资源浪费同时还能保证系统的高并发处理能力。 这套方案可以扩展应用于任何有类似超时要求的业务场景如购物车超时、订单确认超时等。
http://www.dnsts.com.cn/news/205637.html

相关文章:

  • 贵州省和城乡建设厅官方网站如何做企业网站优化
  • 带漂浮广告的网站温州谷歌优化公司
  • 网站建设栏目怎么介绍买个网站服务器多少钱
  • 做电商有哪些网站域名申请步骤
  • 青岛制作企业网站的公司营销型网站策划 建设的考试题
  • 哪个网站可以做印章图案上海注册公司需要多少钱
  • 做vip的网站好做吗沈阳网站建设
  • 企业网站用户群房地产交易网官网
  • 海口网站建设好哪里可以做网站啊
  • 网站页面大小优化怎么做网站建设开源
  • 南阳做个网站多少钱企业网站关键词优化
  • 互联网公司排名2005seo优化外包顾问
  • 电脑软件下载网站会员型网站
  • 织梦首饰网站模板无忧seo博客
  • 静态网站作品程序编程软件
  • 如何发布自己做的网站网页设计有什么证书
  • 网站制作费用明细网站过程中遇到问题
  • 做网站月薪两万环保网站查询碾米是否做备案
  • 根据网站软件做报告巴中+网站建设
  • 宁波个人网站建设网站建设费要交印花税吗
  • 网站营销与推广方案专业软文代写
  • 毕节网站建设兼职做网站容易还是编程容易
  • 网站首页制作教程做网站赚钱还是企业宣传片
  • 沈阳个人做网站创建网站选哪家好
  • 漂亮网站唯品会一家做特卖的网站 分析
  • 河源建网站wordpress divi
  • 教你做网站儿童 html网站模板
  • 高台网站建设动力无限做网站
  • 惠州 家具 网站上线wordpress段落
  • 一流的网站建设哪家好wordpress轮播框