使用哪种策略为"data collecting"式应用程序实现企业集成模式



我正在研究在我们的应用程序中使用企业集成模式作为当前架构的替代品,但我不清楚如何将其用于我们的系统。(无论我们使用什么实现的EIP。

我们拥有的是一个系统,该系统可以针对每种情况接收各种消息(让我们将它们标记为消息类型A,B(MT-A,MT-B))。对于每条消息,我们通过Web服务或文件协议等调用各种外部系统(大约15个)。然后将所有这些数据转换为我们的域模型,保存到数据库中(假设它是一个规范域模型(CDM))。

  1. 第一个问题是,当我收到消息 (MT-A) 时,我要做的是使用消息中的数据调用 Web 服务。在接下来的几个步骤中处理响应(假设做一些转换,保存它做 DB 等)。但是,我想继续处理我的原始消息,从而使用其中的数据调用其他系统。但是现在,由于流程流中的消息有效负载具有来自 Web 服务的响应。在调用外部系统之前,取回我一开始使用的原始消息的最佳方法是什么?(我是否应该为此使用消息存储库,我也在某处看到将原始消息放在标题中的一种非常丑陋的解决方法。

  2. 假设我收到了一些案例的消息,其中来自它们的一些数据,也来自外部系统,现在在我们的数据库/CDM中。然后我收到一条消息 MT-B,我正在调用其他类型的系统,但对于呼叫,我需要来自收到的消息的数据,以及来自先前进程的数据库/CDM 的数据。那么我应该如何获得这些数据。所以我在想2个解决方案:

    2.1. 当我的第一步将收到的消息集成到我的CDM中时,我在此过程中的消息有效载荷将是我的整个CDM,因此我手中有我需要的一切。(这也将解决第 1 点。

    2.2. 将案例 ID 放在与此消息相关的标头中,因此,如果我需要来自 CDM 的一些数据,我将在调用外部系统的服务或端点中查询它。

因此,在这种情况下,这些解决方案中的哪一个是首选的,可能是其他一些解决方案。或者也许我只是没有清楚地看到或理解 ESB-s,我对这个话题很陌生。注意:在这里,我将规范域模型理解为存储在数据库中的应用程序的通用域模型,其中我拥有所需的所有数据。(来自消息也来自外部系统)

谢谢。

您所要求的内容适用于消息传递体系结构。而且,呃,哪种工具更适合你是一个问题,这可能会产生圣战。当然,作为Spring Itegration的开发者,我会保护我的"孩子"。从另一边看,阿帕奇骆驼的做法几乎相同,但略有不同......选择哪种工具取决于您。我建议从一开始就阅读EIP书。并注意模式:聚合器,声明-ckeck,内容丰富器,消息存储

从弹簧集成的例子来看:它写在春天上,它使用春天,它被春天使用。所以,在这种情况下你需要的一切 - 只是春天!;-)这是我们的新架构:Spring IO 平台

我很高兴看到其他意见!

最新更新