我们有一个遗留系统,它生成的文件每个都包含数百条消息(金融交易)。我们需要将这些消息转换为另一种格式并(单独)将它们提交到目标系统。问题是:ESB 是否应该直接接受这些文件进行处理,或者是否应该在遗留系统和 ESB 之间存在一个适配器应用程序,它将接收到的文件拆分为单独的消息并让 ESB 单独处理消息(而不是处理整个文件)?
在第一个解决方案中,我们期望两个 ESB 流。第一个将文件转换为新格式,将其拆分为消息,并将这些消息存储到临时位置。转换需要将文件作为一个整体进行处理,因为该文件包含转换单个消息所需的一些公共部分。第二个流程将获取单独的转换消息(每个都在一个单独的 DB 事务中),将它们传递给目标系统,并等待它的答案(同步或异步)。
第二种解决方案将用一个外部应用程序替换第一个流,该应用程序将转换文件,将其拆分为单独的转换消息,并将它们存储在临时位置(本地文件系统)。第二个流将保留在 ESB 中。
在我们看来,第一种解决方案的缺点在于 ESB 必须处理大文件(在第一个流程中),这通常被认为是一种反模式。另一方面,ESB 会直接适应遗留系统的接口,这是 ESB 的目的之一。
在第二种解决方案中,适配器应用程序将包含转换逻辑,这应该是 ESB 的另一个目的和职责。
对于这种情况(模式),通常建议的解决方案是什么?您能否提供一些比我找到的这两个链接更具描述性的参考资料?
https://www.ibm.com/developerworks/wikis/display/esbpatterns/File+Processing
编辑 另一个参考: http ://www.ibm.com/developerworks/webservices/library/ws-largemessaging/