失败后怎么重新生成业务数据
来源:8-15 事件设计
杜小牧
2018-09-07
写回答
1回答
-
大漠风
2018-09-08
你是指业务失败?还是其他异常导致的失败?
我们一般说业务失败,是说某些条件验证失败,例如秒杀的时候没货了之类的。这种数据当然就记录为某种失败的状态。
如果是其他的失败,例如MQ服务暂时无法访问之类的,等访问正常以后,消息就会正常的消费,触发相应的逻辑。而如果是在处理方法里数据库无法访问或其他系统错误导致的失败,MQ服务器也会有重试机制。然后不同的MQ服务器重试机制也会不一样。
如果经过重试也没有能够正常完成业务方法,我们又会通过一些方法进行超时检查,例如通过定时器检测。那么这时候,我们又根据业务需求,来确定是直接将当前的请求标记为失败(例如下单请求,标记为超时),或者自动再创建一个请求(例如再触发一个下单的操作)。但是不管怎么样,这种超时检查的代码都需要回滚之前所有的修改的数据,然后如果自动提交新请求的话,也要保证新、旧两个请求都需要保证系统数据的一致性。
00
相似问题