失败补偿机制测试|学习笔记

简介: 快速学习失败补偿机制测试

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)失败补偿机制测试】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12433


失败补偿机制测试


当把整个消息回退的都做完之后,来做一个消息确认失败的一个测试,看一下现在的失败补偿机制能不能保证现在服务的一个数据的完整系统。

现在先去把数据的状态确认一下,现在的优惠券,依然是没有使用的订单 ID,还有使用时间库存是1000个

image.png

现在把使用记录全部都删掉然后把消费日志表也都去掉,然后订单也全部都删掉,保证数据没有干扰。然后确认一下用户的余额现在是1000余额的一个使用记录,也把它全部删掉

现在这些数据,已经都归位,回到最原始的一个状态现在就来启动我们各个的微幅。让去启动起来,等这几个全部都启动起来之后就来去进行消息的 orderservice 处理。

发送后进行订单的确认,再看是否给 offer services 当中留了一个异常码。现在异常是存在的,然后有了这个消息,发送能不能保证这三个服务的数据这几个现在都已经启动起来然后回到这个地方,现在来测试一下。

代码如下:

@Test

public void confirmOrder(){Long coupouId=345988230098857984L; Long

goodsId=345959443973935104L Long

userId=345963634385633280L

TradeOrder order=new TradeOrder();

order.setGoodsId(goodsId); order.setuserId(userId);

order.setcouponid(coupouId); order.setAddress("北京");

order.setGoodsNumber(1);

order.setGoodsPrice(new BigDecimal(val:1000));

order.setshippingFee(BigDecimalZERO);

order.setorderAmount(new BigDecimal(val:1000))

order.setMoneyPaid(new BigDecimal(val:100));

orderService.confirmOrder(order);

现在注意观察消息日志有没有确认订单,然后这边儿执行完了之后,看是否接收到 consumer 类似的信息。

image.png

回退优惠券成功后,用户服务用到上面,这里接收到消息余额。看一下余额有没有更改,现在没有更改,然后余额之前使用过一次,现在又把它回退了

image.png

接收到消息以后看回馈库存,库存刚刚1000。现在依然是1000.

然后来看一下订单表,订单表订单的状态已经设置,刚才订单状态被改为取消,现在看一下有没有起作用。这个订单可以证明回馈

经过刚刚的分析,订单表的状态应该是0,是这个未确认,那没有改成我们期望的这个已取消

image.png

原因是收到这个消息的消费者还没来得及去执行,测试的方法已经结束了。

结束了之后,这个微服务其实就已经停,所以我们现在要保证让我们当前的这个测试方法不要停止得让们去等待键盘的输入,然后重新执行。

现在重新测试一下,现在的服务正在启动,然后这个微博呢,由于加了等待键盘输入这么一句话,所以这个方法就不会停止,现在这张就是订单接收消息成功,订单状态设置为取消。

image.png

然后由于取消值改变了,数据库有一点不一样,他消息的取消保证了我们当前数据的一致性。

第一个业务业务失败补偿机制就完成了。具体就是回退库存、回退优惠券、回退余额和取消订单四个步骤。

相关文章
|
5月前
反射机制测试实体类User
反射机制测试实体类User
|
Web App开发 JavaScript 前端开发
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
快速学习 NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文
493 0
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
|
2月前
|
监控 测试技术 数据库
Python自动化测试之异常处理机制
总体而言,妥善设计的异常处理策略让自动化测试更加稳定和可靠,同时也使得测试结果更加清晰、易于理解和维护。在设计自动化测试脚本时,务必考虑到异常处理机制的实现,以保证测试过程中遇到意外情况时的鲁棒性和信息的有效传达。
41 2
|
5月前
|
敏捷开发 机器学习/深度学习 Java
Java中的异常处理机制深入理解与实践:持续集成在软件测试中的应用探索自动化测试在敏捷开发中的关键作用
【4月更文挑战第29天】在Java编程中,异常处理是一个重要的概念。它允许开发者在程序执行过程中遇到错误或异常情况时,能够捕获并处理这些异常,从而保证程序的稳定运行。本文将详细介绍Java中的异常处理机制,包括异常的分类、异常的处理方式以及自定义异常等内容。 【4月更文挑战第29天】 随着敏捷开发和DevOps文化的兴起,持续集成(CI)已成为现代软件开发周期中不可或缺的一环。本文将探讨持续集成在软件测试领域内的关键作用、实施策略以及面临的挑战。通过对自动化构建、测试用例管理、及时反馈等核心要素的详细分析,揭示持续集成如何提高软件质量和加速交付过程。 【4月更文挑战第29天】 在当今快速发
|
5月前
|
Java 测试技术 持续交付
Java中的异常处理机制探索自动化测试在微服务架构中的实践与挑战
【5月更文挑战第27天】本文将深入探讨Java中的异常处理机制,包括异常的概念、分类以及如何使用try-catch-finally语句进行异常处理。文章还将介绍自定义异常的方法以及在实际开发中如何选择合适的异常处理策略。 【5月更文挑战第27天】 随着软件开发领域向微服务架构的转型,传统的软件测试方法面临诸多挑战。本文旨在探讨自动化测试在微服务环境下的应用实践及所面临的问题。我们将从微服务的特性出发,分析自动化测试的必要性,并深入讨论如何构建一个高效、鲁棒的自动化测试框架。文章还将介绍一系列创新的测试策略和工具选择,以及如何克服微服务带来的分布式复杂性。最后,通过案例研究,展示自动化测试在实
|
5月前
|
NoSQL 算法 测试技术
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
作为大多数图数据库性能测试标配的 LDBC SNB 它是如何保障不同系统环境之间的测评比较公平且基准测试结果可重复的呢?本文从数据和 Schema 生成入手同你讲解它的原理。
137 2
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
|
5月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
74 0
|
测试技术
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
74 0
|
存储 Kubernetes 监控
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记
快速学习 PolarDB-X 混沌测试系统搭建赛题解析
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记