失败后怎么重新生成业务数据

来源:8-15 事件设计

杜小牧

2018-09-07

写回答

1回答

大漠风

2018-09-08

你是指业务失败?还是其他异常导致的失败?

我们一般说业务失败,是说某些条件验证失败,例如秒杀的时候没货了之类的。这种数据当然就记录为某种失败的状态。

如果是其他的失败,例如MQ服务暂时无法访问之类的,等访问正常以后,消息就会正常的消费,触发相应的逻辑。而如果是在处理方法里数据库无法访问或其他系统错误导致的失败,MQ服务器也会有重试机制。然后不同的MQ服务器重试机制也会不一样。

如果经过重试也没有能够正常完成业务方法,我们又会通过一些方法进行超时检查,例如通过定时器检测。那么这时候,我们又根据业务需求,来确定是直接将当前的请求标记为失败(例如下单请求,标记为超时),或者自动再创建一个请求(例如再触发一个下单的操作)。但是不管怎么样,这种超时检查的代码都需要回滚之前所有的修改的数据,然后如果自动提交新请求的话,也要保证新、旧两个请求都需要保证系统数据的一致性。

0
0

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程