Я хотел бы добиться следующего типа оркестровки с CAMEL:
- Клиент отправляет запрос HTTP POST на CAMEL
- CAMEL отправляет запрос HTTP POST на внешнюю конечную точку (сервер)
- Внешний сервер отвечает 200 OK
- CAMEL отправляет HTTP-запрос GET на внешнюю конечную точку (сервер)
- Внешний сервер отвечает
После шага5, я хочу проверить ответ: если ответ 200 OK и состояние = INPROGRESS (это состояние может быть получено из полученного тела XML), я хочу повторно передать HTTP GET на внешнюю конечную точку, пока состояние не будетотличается от INPROGRESS.
Я думал использовать оператор retryWhile, но я не уверен, как построить подпрограмму в маршруте.Например, для проверки, является ли ответ 200 OK и состояние = INPROGRESS, я могу легко представить Предикат.Таким образом, значение retryWhile уже выглядит следующим образом:
.retryWhile (Is200OKandINPROGRESS)
, но где я должен разместить его в маршруте, чтобы HTTP-GET был повторно передан?Например: (только принимая во внимание шаги 4 и 5)
from("...")
// here format the message to be sent out
.to("external_server")
// what code should I write here ??
// something like:
// .onException(alwaysDo.class)
// .retryWhile(Is200OKandINPROGRESS)
// .delay(2000)
// .end ()
// or maybe it should not be here ??
Я также немного запутался, как должен выглядеть «alwaysDo.class» ??Или ... я должен использовать что-то совершенно другое, чтобы решить эту оркестровку?(Я просто хочу повторно передать, пока получаю 200 OK с состоянием INPROGRESS ...)
Заранее благодарен за вашу помощь.