Чтобы вызвать два toD в apache верблюжий источник dsl xml - PullRequest
0 голосов
/ 14 апреля 2020

Я собираюсь создать один отдых службы в отдыхе DSL xml. На что я создал один маршрут. Для маршрута я собираюсь назвать свои собственные микросервисы (это созданный другой проект) для использования toD uri. Как только я получу ответ, я собираюсь взять значения из тела (ответ json). После этого я снова буду звонить другим службам по тому же маршруту на основе значений ответа (мы берем одно поле в ответе).

Мой вопрос:

  1. как мы Можно взять значения из ответа в первом сервисе
  2. И как установить заголовки в этих уважаемых значениях в первых значениях ..
  3. Как вызвать 2 сервиса в маршруте. Можно ли два раза позвонить tod uri?

Пример кода

<toD uri=http://localhost >

<log message =${body} >

(this response is going to set 2nd service query parameter value )

<toD uri=http://localhost? 1 services response values a>

1 Ответ

0 голосов
/ 16 апреля 2020

Не уверен, что я полностью понимаю ваш случай, но вот мои ответы на ваши вопросы:

1) Вы можете выбрать любое значение из ответа JSON с помощью JsonPath. Чтобы использовать его позже, вы, вероятно, захотите сохранить его в заголовке сообщения

.setHeader("myHeader", jsonpath("$.your.json.path"))

2) Извините, я не понимаю этого вопроса: -)

3) Да, вы можете сделайте столько .to() или .toD(), сколько захотите

Однако, если вы хотите вызывать службы REST и используете компонент REST Camel, вы можете воспользоваться встроенными шаблонами URI. Это означает, что, возможно, вам не нужно .toD()

Например,

.to("rest:get:hello/{myHeader}")

вставит значение, извлеченное из ответа JSON выше, потому что имя заполнителя ищется в сообщении Заголовки и, если они найдены, заменены значением соответствующего заголовка сообщения

.setHeader("myHeader", jsonpath("$.your.json.path")) // assume jsonpath result is "world"
.to("rest:get:hello/{myHeader}") // URI "hello/world" is called
...