У меня есть верблюжий маршрут, который считывает сообщения в пакетах из очереди, обрабатывает сообщение и отправляет их одно за другим в api и ожидает ответа api.
У меня проблема с получением исходного сообщения, полученного в начале, когда выдается ответ 500.
Я думал, что разделитель возвращает исходное сообщение?
Вот мой маршрут:
from(gatewayRouteConfig.getInputQueueEndpoint())
.process(process1)
.process(process2)
.setExchangePattern(ExchangePattern.InOnly)
.choice()
.when().jsonpath("Message", true)
.setBody(MESSAGE_WRAPPER_EXTRACTOR)
.end()
.split().method(messageSplitter, "splitMessages")
.log(INFO, "Received Message : ${body}")
.process(process3)
.process(validate)
.process(identity)
.process(requestProcessor) //where the exception is thrown and the original message that is used in the exception handler is picking up
.process(someService::gatewayResponseTimeStop)
.process(someService::endToEndResponseStop)
.process(someService::markGatewayDeliveryAsSuccess)
.log("Completed processing...");
и вот мой обработчик исключений в том же классе:
private void configureExceptionHandlers() {
onException(ProviderException.class) //thrown when 500 error occurs
.useOriginalMessage() //picks message in the form the process(requestProcessor) method recieves it instead of start of route
.handled(true)
.log(ERROR, LOGGER, EXCEPTION_MESSAGE_WITH_STACKTRACE)
.to(DLQ);