Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Camel组合JSON服务响应_Json_Apache Camel_Aggregate_Pojo - Fatal编程技术网

使用Camel组合JSON服务响应

使用Camel组合JSON服务响应,json,apache-camel,aggregate,pojo,Json,Apache Camel,Aggregate,Pojo,我有两个以JSON格式返回数据的基于资源的服务 第一个是订单服务,它返回订单详细信息。它包含orderid和产品列表,包括产品id及其数量 另一个是产品服务,它返回产品的产品详细信息(描述、单价),产品ID作为输入传递给它 我想使用驼峰路线组合这两个服务,这样路线响应将是订单中每个产品的订单详细信息以及产品详细信息(描述、单价、数量、数量*单价) 由于两个服务分别返回JSON,我不确定如何将它们组合在一起以返回最终结果 我认为我必须将每个服务的JSON响应转换为java对象,然后使用POJO根据

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

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

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

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

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

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

但是,不确定这是否是使用camel的正确方法,或者是否有一种方法可以直接使用独立的JSON响应并将它们组合起来并返回响应


有人能帮我吗。

你就不能有两条路线吗

路线1:调用订单服务并将响应发送给处理器,提取产品id并将其保存在某个标题中

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

您应该使用克劳斯建议的模式,然后将来自产品服务的响应与来自订单服务的响应主体进行聚合

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

看看Content Enricher EIP模式