【问题标题】:Which Strategy to use to implement Enterprise Integration Patters for a "data collecting" style application使用哪种策略来实现“数据收集”风格应用程序的企业集成模式
【发布时间】:2013-09-16 23:03:39
【问题描述】:

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

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

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: architecture esb


    【解决方案1】:

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

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

    我很高兴看到其他意见!

    【讨论】:

    • 您好,我并不是说这与 EIP 的实现有关,事实上我会从介绍中删除这两个产品。我目前正在读那本书。这应该是关于一些通用的架构解决方案......
    • 您能否更深入地解释一下这些解决方案在案例 1 和 2 中的用法?谢谢
    • 案例#1:内容丰富。
    • 案例 #1:Content Enricher。您将原始消息发送到某个子流并等待响应。如果需要,您可以从该响应中“丰富”您的原始消息,然后再发送。案例#2:索赔检查。您将消息存储到数据库并将结果发送到聚合器。您收到第二条消息(请记住:使用相同的关联键)并将其发送到聚合器。最后一个释放消息组并将其发送到某个回收处理程序。样品在这里:github.com/spring-projects/spring-integration-samples
    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2013-04-17
    • 1970-01-01
    • 2021-10-04
    • 2012-05-22
    相关资源
    最近更新 更多