【发布时间】:2013-09-16 23:03:39
【问题描述】:
我正在研究在我们的应用程序中使用企业集成模式来替代当前架构,但我不清楚如何将它用于我们的系统。 (不管我们使用什么 EIP 实现。)
我们拥有的是一个系统,可以接收各种类型的消息(让我们将它们标记为消息类型 A、B(MT-A、MT-B))。对于每条消息,我们通过 Web 服务或某种文件协议等调用各种外部系统(其中大约 15 个)。然后所有这些数据都被转换为我们的域模型,保存到数据库中(假设它是一个规范域模型(CDM))。
第一个问题是当我收到消息 (MT-A) 时,我想做的是使用消息中的数据调用 Web 服务。在接下来的几个步骤中处理响应(假设进行一些转换,将其保存到数据库等)。但后来我想继续处理我的原始消息,从而使用来自它的数据调用其他系统。但是现在作为流程流中的消息有效负载具有来自 Web 服务的响应。什么是最好的方法,在调用外部系统之前取回我一开始使用的原始消息? (我是否应该为此使用消息存储,而且我在某处看到将原始消息放在标题中的一种非常丑陋的解决方法。)
-
假设我收到了一些关于一个案例的消息,其中一些来自它们的数据,也来自外部系统的数据现在位于我们的数据库/CDM 中。然后我收到一条消息 MT-B,我正在调用其他类型的系统,但是对于调用,我需要收到消息中的数据,还需要来自先前进程的数据库/CDM 中的数据。那么我应该如何获取这些数据。所以我在想2个解决方案:
2.1。当我迈出第一步时,我将收到的消息集成到我的 CDM 中,那么我在此过程中的消息有效负载将是我的整个 CDM,因此我手头有我需要的一切。 (这也可以解决第 1 点。)
2.2。将案例 ID 放在与此消息相关的标头中,因此如果我需要来自 CDM 的一些数据,我只需在调用外部系统的服务或端点中查询它。
那么对于这种情况,这些解决方案中的哪一种更适合,可能还有其他一些。或者也许我只是没有清楚地看到或理解 ESB-s,我对这个话题很陌生。 注意:在这里,我将规范域模型理解为存储在数据库中的应用程序的通用域模型,其中我拥有我需要的所有数据。 (来自消息也来自外部系统)
谢谢。
【问题讨论】:
标签: architecture esb