2

我是 Apache Camel 的新手,在理解如何实现简单的集成任务时遇到问题:

所以用例是

  1. 从请求正文中获取列表标识符 ${body.ids} 包含我要迭代的我的 id 列表。示例:1、3、65、6 如何迭代这些(如在 java foreach 中)?
  2. 循环遍历我的标识符列表并使用当前标识符调用端点;例如,获取人员/{id} 并将响应人员添加到我的人员集合中。使用哪个 EIP 来收集 rest 调用的每个响应并将它们聚合到一个列表中?
  3. 将我的人集合转换为另一种类型。
  4. 返回响应

谢谢你的帮助

4

2 回答 2

2

您必须编写一个Camel Route来监听请求并执行以下操作

  1. 使用Camel Split EIP迭代 ID
  2. 进行 HTTP 调用,例如使用Camel HTTP 4
  3. 使用Enrich EIP将 HTTP 响应与您的消息正文合并
  4. 使用Aggregate EIP收集多个部分,如果您想重新收集以前拆分的部分,您可以使用Split-Aggregate

如果您是 Camel 新手,请获取Camel in Action 2nd edition的副本。它会带您逐步从基础到高级主题。

于 2020-01-14T11:25:22.113 回答
0

这是示例:(这是在循环中调用 Rest API 并打印响应 - 使用骆驼 spring-DSL 和 groovy 脚本)

 <loop doWhile="true">
   <simple>${property.loopCounter} < ${body.ids} </simple>
    <script>
        <groovy><![CDATA[
        def loopCounter = exchange.getProperty("loopCounter")
        exchange.setProperty("loopCounter", loopCounter + 1)
    ]]></groovy>
    </script>
    <setHeader headerName="Exchange.HTTP_URI">
        <simple>https://${property.host}/api/<your api endpoint url complete here!!}</simple>
    </setHeader>
    <toD uri="http4:host"/>
    <script>
        <groovy><![CDATA[
                import groovy.json.*;
                def response = new JsonSlurper().parseText(exchange.getIn().getBody(String.class))
                println(" Response is :"+response));
                ]]></groovy>
    </script>
</loop>
于 2020-01-14T12:09:15.330 回答