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

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

开发者学堂课程【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

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

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

相关文章
|
Web App开发 JavaScript 前端开发
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
快速学习 NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文
410 0
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
|
1月前
|
NoSQL 算法 测试技术
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
作为大多数图数据库性能测试标配的 LDBC SNB 它是如何保障不同系统环境之间的测评比较公平且基准测试结果可重复的呢?本文从数据和 Schema 生成入手同你讲解它的原理。
39 2
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
|
2月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
|
8月前
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
54 0
|
11月前
|
测试技术
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
52 0
|
关系型数据库 OLAP API
测试 API|学习笔记
快速学习测试 API
117 0
测试 API|学习笔记
|
JavaScript Java 测试技术
app自动化测试(Android)--显式等待机制
app自动化测试(Android)--显式等待机制
119 0
|
存储 SQL 监控
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
快速学习 PolarDB-X 进行 TP 负载测试。
307 0
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
|
SQL 存储 关系型数据库
PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换|学习笔记
快速学习PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换
738 0
PostgreSQL 流复制搭建主从环境,同步和异步的解释,压力测试,主从角色切换|学习笔记
|
数据可视化 Dubbo Java
MSE 微服务测试---自动化回归最佳实践|学习笔记
快速学习 MSE 微服务测试---自动化回归最佳实践
295 0
MSE 微服务测试---自动化回归最佳实践|学习笔记

热门文章

最新文章