如何在属性级别合并或聚合多个Web服务[不是完整的响应]

时间:2017-05-10 08:57:47

标签: java rest spring-boot apache-camel

我尝试使用apache Camel合并来自Web服务的两个响应。在下面的代码中,我连接了两个响应。

public Exchange aggregate(Exchange exchange1, Exchange exchange2) {
        if (exchange1 == null) {
            return exchange2;
        } else {
            String body1 = exchange1.getIn().getBody(String.class);
            String body2 = exchange2.getIn().getBody(String.class);
            String merged = (body1 == null) ? body2 : body1 + "," + body2;
            exchange1.getIn().setBody(merged);
            return exchange1;
        }
    }

这里我的目的是从response1中选择一些属性并从response2中选择一些属性,然后使用我们从响应1和2中选择的属性来最终确定最终响应。最终响应将被发送回客户端。

先谢谢。

更新:我们可以通过使用现成的Camel模式实现这一目标吗?如果没有,任何想法或建议写我们自己的算法来处理这种情况。

1 个答案:

答案 0 :(得分:0)

您可以通过以下任一方式从JSON主体获取属性:

  1. 在聚合之前(在路由direct:read-service1-info和第二个路径的末尾)将Camel路由中的响应解组为Java对象,然后将它们用作聚合方法中的其他Java对象(Response1Type response1 = exchange1.getIn().getBody(Response1Type.class)): Unmarshalling JSON
  2. 使用某些库在聚合方法中读取json,例如:JsonPath