Apache Camel: Как перебрать список и вызвать остальные API? - PullRequest
0 голосов
/ 13 января 2020

Я новичок в Apache Верблюд, и у меня возникают проблемы с пониманием того, как реализовать простую задачу интеграции:

Итак, вариант использования

  1. Получить идентификаторы списка из запроса body $ {body.ids} содержит список моего идентификатора, который я хочу повторить. Пример: 1, 3, 65, 6 Как выполнить итерацию по ним (как в java foreach)?
  2. L oop по списку моих идентификаторов и вызвать конечную точку с текущим идентификатором; например, получить человека / {id} И добавить ответ Person в мои коллекции персон. Какой EIP использовать для сбора каждого ответа вызова покоя и агрегирования их в список?
  3. Преобразовать мою коллекцию людей в другой тип.
  4. Возвращать ответ

Спасибо за вашу помощь

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вы должны написать Верблюжий маршрут , который прослушивает запросы и выполняет следующие действия:

  1. Перебирать идентификаторы с помощью Camel Split EIP
  2. Выполнение HTTP-вызовов, например, с помощью Camel HTTP 4
  3. Объединение ответов HTTP с телом сообщения с помощью Enrich EIP
  4. Использование Aggregate EIP для сбора нескольких частей. В случае, если вы хотите повторно собрать бывшие разделенные части, вы можете использовать Split-Aggregate

Если вы новичок в Camel, получите копию Camel в действии, второе издание . Это займет вас шаг за шагом от основ до продвинутых тем.

0 голосов
/ 14 января 2020

Вот пример: (который должен вызывать Rest API в l oop и печатать ответ - используя скрипт camel 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>
...