对于多个系统之间的数据交互,存在以下场景会出现问题:

  1. 系统A调用系统B,系统B逻辑处理时间过程,导致系统A直接报错回滚,最后系统A action失败,而系统B action成功。
  2. 系统A中同一笔数据在并发的情况下可能同时调用系统B,此时系统B在接收到第一次传来的数据进行处理后,处理第二次数据直接报错返回,可能存在系统A先接收到系统B返回的报错信息,而后返回的成功信息由于乐观锁导致直接回滚系统A中对应线程的处理逻辑;从而也导致系统A action失败,系统B action成功

对于上面两种场景问题,比较好的处理方式是:被调用系统B需要进行幂等处理,系统A需要添加一个补偿方法,在不知道成功或失败的情况下,可以再次调用系统B获取最新的结果从而进行相应的业务逻辑操作。