0

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

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

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

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

    2.1。当我迈出第一步时,我将接收到的消息集成到我的 CDM 中,那么我在此过程中的消息有效负载将是我的整个 CDM,因此我手中有我需要的一切。(这也可以解决第 1 点。)

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

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

谢谢你。

4

1 回答 1

2

What you are asking is appropriate to the Messaging Architecture. And, eh, which tool is better for you is a question, which may produce holy war. Of course me, as a developer of Spring Itegration, will protect my 'child'. From other side Apache Camel does almost the same, but a bit differently... It's up to you which tool to choose. I suggest from a start read the EIP Book. And pay attention to patterns: Aggrgator, Claim-Ckeck, Content Enricher, Message Store

From case of Spring Integration: it written on Spring, it uses Spring, it is used by Spring. So, everything what you need in this case - just Spring! ;-) Here is our new architecture: The Spring IO Platform

And I'll be glad to see other opinions!

于 2013-09-12T14:20:57.783 回答