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

国外平面设计欣赏网站百度快照首页

国外平面设计欣赏网站,百度快照首页,建设部网站继续教育,企业管理培训课程定制1、简述 在支付系统中#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.hkea.cn/news/14307347/

相关文章:

  • 网站设计分析案例东莞企业网站设计专业服务
  • 天津做系统集成的公司网站网站首页图片切换代码
  • 大型网站建立最经典最常用的网站推广方式
  • 上海建站临沂做网站选盛誉
  • 电影网站备案学校网站建设主体
  • 外贸用免费网站推广 有效果硬件开发是什么专业
  • 网站建设程序有哪些ico网站建设
  • 网站做建筑三维图彩票网站开发制作
  • 网站建设有哪些名词企业管理系统er图
  • 网站设计案例网站小程序代理项目
  • 网站建设要学哪些网站开发需要哪些知识和工具
  • 北京视频直播网站建设减肥瘦身网站模板源码
  • 网站底部版权信息代码济南网站建设92jzh
  • 手机网站 生成有保障的注册代理
  • 有哪些专做自然风景图片的网站长春市住房建设局网站
  • 网站做的比较好的贸易公司.net给网站做短信验证
  • 视觉网站建设长沙小红书推广公司
  • 三星做号网站福清市建设局监督站网站
  • 潘家园做网站的公司施工企业研发资金投入情况说明
  • 珠海网站建设怎么样电话语音聊天网站建设多少钱
  • 无锡做网站6上海网站建设优化价格
  • 北京网站优化公司哪家好中企动力做的网站容易SEO吗
  • 三种常用的网站设计软件陕西省建设集团公司网站
  • php一键建站wordpress自动选择添加标签页
  • 烟台制作网站天津网站建站
  • dw做的网站链接文库网站建设开发
  • 备案资料 网站建设方案书网站建设如何把更改内容
  • 网站网站做代理企业网站设计要点
  • 网站设计用处wordpress 电子商务插件
  • 一年级书签制作图片通辽网站建设0475seo