今天爱分享给大家带来远程服务调用防重复处理 通过业务单号做链路幂【附代码】,希望能够帮助到大家。
建议用业务订单号做全链路的防重,幂等处理。将上游送上来的业务单号直接发下游,防止异常处理时由于新生成的下游流水号导致下游重复处理。
Ps:有些场景,下游流水号长度会比较短,如果是需要再生成下游流水号,建议远程调用下游前先落表。异常处理里,直接从数据库拿该字段。
CbibTransferReqVo req = new CbibTransferReqVo(); req.setAmt(amt); ... req.setSerialId(SerialNumberUtil.generateSerialId()); //错误:调用前新生成了订单号 //正确:req.setSerialId(inMessage.getOrderNo()); res = cbibService.doTransfer(req);