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

建设网站话术连云港做网站优化

建设网站话术,连云港做网站优化,推广咨询,电子商务网站建设大二实训场景与技术栈 场景#xff1a;电商系统中的订单创建流程#xff0c;涉及订单服务#xff08;Order Service#xff09;、库存服务#xff08;Inventory Service#xff09;、支付服务#xff08;Payment Service#xff09;。 技术栈#xff1a; Java 11 Spring Bo… 场景与技术栈 场景电商系统中的订单创建流程涉及订单服务Order Service、库存服务Inventory Service、支付服务Payment Service。 技术栈 Java 11 Spring Boot 2.7.0 MySQL 8.0 RabbitMQ 项目结构与组件 order-service inventory-service payment-service saga-coordinator 代码实现 1. Saga Coordinator SpringBootApplicationpublic class SagaCoordinatorApplication { public static void main(String[] args) { SpringApplication.run(SagaCoordinatorApplication.class, args); }}ServiceRequiredArgsConstructorpublic class SagaService { private final SagaOrderService sagaOrderService; private final SagaInventoryService sagaInventoryService; private final SagaPaymentService sagaPaymentService; private final SagaTransactionRepository sagaTransactionRepository; public void placeOrder(Long orderId, Long productId, int quantity, double amount) throws ExecutionException, InterruptedException { SagaTransaction transaction new SagaTransaction(); transaction.setOrderId(orderId); transaction.setProductId(productId); transaction.setQuantity(quantity); transaction.setAmount(amount); transaction.setStatus(SagaTransaction.Status.INITIATED); sagaTransactionRepository.save(transaction); CompletableFuture.runAsync(() - sagaOrderService.createOrder(transaction)) .thenRunAsync(() - sagaInventoryService.decreaseInventory(transaction)) .thenRunAsync(() - sagaPaymentService.charge(transaction)) .exceptionally(ex - { rollback(transaction); throw new RuntimeException(Saga failed, ex); }); } private void rollback(SagaTransaction transaction) { CompletableFuture.runAsync(() - sagaPaymentService.refund(transaction)) .thenRunAsync(() - sagaInventoryService.increaseInventory(transaction)) .thenRunAsync(() - sagaOrderService.cancelOrder(transaction)) .exceptionally(ex - { transaction.setStatus(SagaTransaction.Status.FAILED); sagaTransactionRepository.save(transaction); throw new RuntimeException(Rollback failed, ex); }); }} 2. SagaOrderService Servicepublic class SagaOrderService { private final OrderService orderService; private final RabbitTemplate rabbitTemplate; Autowired public SagaOrderService(OrderService orderService, RabbitTemplate rabbitTemplate) { this.orderService orderService; this.rabbitTemplate rabbitTemplate; } public void createOrder(SagaTransaction transaction) { // 创建订单逻辑 // ... // 发送创建订单完成的消息 rabbitTemplate.convertAndSend(order.create, transaction); } public void cancelOrder(SagaTransaction transaction) { // 取消订单逻辑 // ... // 发送取消订单完成的消息 rabbitTemplate.convertAndSend(order.cancel, transaction); }} 3. SagaInventoryService Servicepublic class SagaInventoryService { private final InventoryService inventoryService; private final RabbitTemplate rabbitTemplate; Autowired public SagaInventoryService(InventoryService inventoryService, RabbitTemplate rabbitTemplate) { this.inventoryService inventoryService; this.rabbitTemplate rabbitTemplate; } public void decreaseInventory(SagaTransaction transaction) { // 扣减库存逻辑 // ... // 发送扣减库存完成的消息 rabbitTemplate.convertAndSend(inventory.decrease, transaction); } public void increaseInventory(SagaTransaction transaction) { // 增加库存逻辑 // ... // 发送增加库存完成的消息 rabbitTemplate.convertAndSend(inventory.increase, transaction); }} 4. SagaPaymentService Servicepublic class SagaPaymentService { private final PaymentService paymentService; private final RabbitTemplate rabbitTemplate; Autowired public SagaPaymentService(PaymentService paymentService, RabbitTemplate rabbitTemplate) { this.paymentService paymentService; this.rabbitTemplate rabbitTemplate; } public void charge(SagaTransaction transaction) { // 收款逻辑 // ... // 发送收款完成的消息 rabbitTemplate.convertAndSend(payment.charge, transaction); } public void refund(SagaTransaction transaction) { // 退款逻辑 // ... // 发送退款完成的消息 rabbitTemplate.convertAndSend(payment.refund, transaction); }} SagaTransaction Entity Entitypublic class SagaTransaction { Id GeneratedValue(strategy GenerationType.IDENTITY) private Long id; private Long orderId; private Long productId; private int quantity; private double amount; private Status status; // INITIATED, COMPLETED, ROLLING_BACK, ROLLED_BACK, FAILED // Getters Setters} 消息队列监听 在每个微服务中需要添加消息队列的监听器以便在接收到消息时执行相应的操作。例如在order-service中 Componentpublic class OrderSagaListener { private final SagaOrderService sagaOrderService; Autowired public OrderSagaListener(SagaOrderService sagaOrderService) { this.sagaOrderService sagaOrderService; } RabbitListener(queues order.create) public void handleOrderCreate(SagaTransaction transaction) { sagaOrderService.createOrder(transaction); } RabbitListener(queues order.cancel) public void handleOrderCancel(SagaTransaction transaction) { sagaOrderService.cancelOrder(transaction); }} 额外细节 为确保事务的一致性可以使用RabbitMQ的发布确认Publisher Confirms机制。 每个微服务的数据库事务应该使用Transactional注解来保证ACID属性。 需要设计失败重试和事务状态检查机制确保在故障恢复时能够正确地执行补偿操作。 通过上述设计SAGA模式与RabbitMQ的结合不仅能够处理跨服务的事务还能够通过消息队列实现服务解耦和消息的异步处理提高系统的稳定性和可扩展性。
http://www.dnsts.com.cn/news/61755.html

相关文章:

  • 如何设计好的网页网站页面优化技巧
  • 小企业网站建设怎样可以快速北京网站制作沈阳
  • 网站建设销售如何接单合肥论坛建站模板
  • 1688精品货源网站入口给静态网站加后台
  • 网站用图片做背景图片常州人才招聘网
  • 南京做网站建设的公司哪家好网站建设技术服务合同
  • 做爰网站下载地址南翔企业网站开发建设
  • 白云网站建设公司网站开发和软件开发区别
  • 移动网站开发与维护网站优化关键词
  • 北京低价做网站做资讯类网站需要什么资质
  • 模仿网站制作专业做网站设计公司价格
  • 做驾考学时在哪个网站平面设计软件学哪个比较好
  • 南平网站开发个人博客内容
  • 网站建设的数据库设计图woocommerce做的网站
  • 直播网站开发核心技术哪些网站可以做平面设计
  • 做什么网站能吸引流量wordpress更换主题出错
  • 郴州网站制作公司土巴兔装修公司电话
  • 求个网站你懂我意思是企业网站备案名称窍门
  • 兴义网站建设公司龙华区城市建设局网站
  • 怎么做网站的页眉网站维护排名
  • 京东网站网站建设是什么设计制作生态瓶教学反思
  • 盘锦网站建设 盘锦建站推广 盘锦建站商城型企业网站的功能
  • 网页设计与制作教程清华大学出版社上海市网站seo
  • 河北建设工程网站wordpress gif 点击播放
  • 网站空间怎么续费网站可以自己建立吗
  • 深圳手机商城网站设计制作石家庄专业网站制
  • 建网站的程序企业标准网上备案网站
  • 金华seo建站iis7创建网站
  • 站长之家ppt素材创建站点如何做网站
  • 山东住房和城乡建设厅网站首页报告的英文