使用哪种策略为“数据收集”样式应用程序实现企业集成模式

时间:2013-09-12 13:57:38

标签: architecture esb

我正在调查我们的应用程序中企业集成模式的使用,以替代当前的体系结构,但我有一些不清楚的情况如何将它用于我们的系统。 (无论我们使用EIP的实现方式如何。)

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

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

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

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

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

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

    谢谢。

1 个答案:

答案 0 :(得分:2)

您所询问的内容适用于消息传递架构。而且,呃,哪个工具对你更好是一个问题,可能产生圣战。当然,作为Spring Itegration的开发者,我将保护我的“孩子”。从另一方面来看,Apache Camel的功能几乎相同,但有点不同...... 这取决于您选择哪种工具。我建议从一开始就阅读EIP Book。 并注意模式: Aggrgator,Claim-Ckeck,Content Enricher,Message Store

从Spring Integration的例子:它写在Spring上,它使用Spring,它被Spring使用。 所以,在这种情况下你需要的一切 - 只是春天! ;-) 这是我们的新架构:The Spring IO Platform

我很高兴看到其他意见!