实际中碰到的一个异构系统之间数据交换的处理方式设计

本文探讨了在M系统与E系统间通过ESB进行数据交换时遇到的问题及其解决方案。当ESB调用E系统的WebService失败时,采取由M系统重新生成数据的策略。为解决E系统无补偿机制的问题,提出在调用前检查数据是否存在,避免重复调用。此外,还讨论了异常处理方法,包括回滚事务、存储异常数据以及保留增量数据以供排查错误。最后,提出了一个平衡事务完整性和错误处理的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况描述:

两个不同的业务系统M系统与E系统,两者之间的数据交换采用ESB平台,从而可以保证ESB内部的数据传递流程可以具有一个全局的事务,一旦发生任何异常,都会回滚。

数据传递的方向为从M系统传递至E系统。

前期约定的内容,ESB获取M系统的数据,数据获取方式为从ESB与M系统约定的数据库中间表中获取(相当于M系统的前置机),调用E系统的WebService,将数据写入E系统,并且将调用是否成功的结果写回与M系统约定的中间表中(写回M系统中间表的工作由ESB负责完成),调用E系统的WS之后,除了回写与M系统的中间表,还会有一些其他的数据库更新等操作。(监控与M系统的中间表的增量数据,使用数据库触发器,并在额外的表中,记录增量数据的信息(例如:新增时间等信息),一切顺利之后,把监控到的与M系统的中间表中的增量数据删除掉。)

问题:

  1. 事务的问题可以交由ESB来处理,可以忽略。
  2. 调用WS如果数据未能写入E系统,WS不会抛出异常,而是会返回一个未能写入的代码,并返回原因。
  3. 调用WS成功,并且成功写入E系统,但是,在后续ESB处理其他事情的过程中发生异常,事务照样回滚。而E系统的WS,没有补偿机制,不会对数据是否已经存在进行判断,而且E系统的WS由于各种原因,调用时性能不佳

解决方案:

对于问题1。无需关注。

对于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值