【问题标题】:combine JSON service responses using Camel使用 Camel 组合 JSON 服务响应
【发布时间】:2015-11-01 12:47:13
【问题描述】:

我有 2 个基于资源的服务以 JSON 格式返回数据。

第一个是 Order 服务,它返回订单详细信息。这包含 orderid 和产品列表,包括产品 ID 及其数量。

另一个是产品服务,它返回产品的产品详细信息(描述,单价),其 productid 作为输入传递给它。

我想使用骆驼路线组合这两种服务,以便路线响应将是订单详细信息以及订单中每个产品的产品详细信息(描述、单价、数量、数量 * 单价)。

由于这两个服务分别返回 JSON,我不确定如何将它们组合在一起以返回最终结果。

我认为我必须将每个服务的 JSON 响应转换为 java 对象,然后使用 POJO 根据需要计算详细信息,然后最后将响应转换回 JSON 并返回结果。

但是,不确定这是否是骆驼的正确方法,还是有办法直接使用单独的 JSON 响应并将它们组合并返回响应。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 看看 Content Enricher EIP 模式

标签: json apache-camel aggregate pojo


【解决方案1】:

您应该按照克劳斯的建议使用content-enrich 模式,然后将来自产品服务的响应与来自订单服务的响应主体聚合起来。

from("direct:in")
    .to("http://order.service:8080")
    .enrich(simple("http:product.service/?productIds=${header.productIds}"), new OrderProductAggregationStrategy());

【讨论】:

    【解决方案2】:

    你不能简单地有两条路线吗?

    路线 1:调用订单服务并将响应发送到处理器并提取产品 ID 并将其保存在某处的标头中。

    路线 2:使用您从上一条路线获得的标头中的产品 ID 调用产品服务。此处的响应为您提供了路线 2 中收到的每个产品 ID 的产品详细信息。

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 1970-01-01
      • 2018-02-10
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多