Я пытаюсь найти, существует ли прямой маршрут на верблюде с помощью блока catch try, как показано ниже. Я ищу предикат, чтобы проверить, существует ли маршрут на верблюде или нет. Я не мог найти ничего, что непосредственно дает мне ответ, так что я взял ниже подход,Как проверить, существует ли маршрут верблюда apache?
<doTry>
<recipientList>
<description>Check if a country specific handler is available</description>
<simple>direct:${header.operationName}${body.country}</simple>
</recipientList>
<doCatch>
<exception>org.apache.camel.component.direct.DirectConsumerNotAvailableException</exception>
<recipientList>
<description>if a country specific handler is not available to to the base</description>
<simple>direct:${header.operationName}</simple>
</recipientList>
</doCatch>
</doTry>
Это означает, что я вынужден использовать обработчик исключений в верблюд, чтобы поймать DirectConsumerNotAvailableException, чтобы определить, является ли маршрут существует. Я смотрю на альтернативный подход, при котором мы можем использовать простое выражение, как существует ниже,
<choice>
<when>
<description>Check if a country specific handler is available</description>
<simple>direct:${header.operationName}${body.country} exists</simple>
<recipientList>
<description>country specific handler is available</description>
<simple>direct:${header.operationName}${body.country}</simple>
</recipientList>
</when>
<otherwise>
<recipientList>
<description>country specific handler is not available then route to generic processing</description>
<simple>direct:${header.operationName}</simple>
</recipientList>
</otherwise>
</choice>
Пожалуйста, дайте мне знать, если что-то подобное может быть достигнуто с помощью некоторых других средств.
Я отредактировал вопрос для использования recipientList –