с обработчиком ошибок и условие исключения * например, 1004 *
(java DSL) предположим, что вы включаете исключение, которое хотите обработать, в MyDelayedRetryableException
:
onException(MyDelayedRetryableException.class)
.useOriginalMessage()
.redeliveryDelay(1000) \\ wait 1 second before retry
.backOffMultiplier(2.0) \\every retry wait last delay multiplied this value (1000, 2000, 4000,...)
.maximumRedeliveries(100) \\ attempts before giving up
.retryAttemptedLogLevel(LoggingLevel.WARN)
.useExponentialBackOff();
Приведенный выше пример относится ко всем маршрутам, вы также можете указать обработку ошибок для каждого маршрута.Есть несколько способов сделать то, что вы просите, например, с помощью приведенного выше примера вы можете сделать его общим и использовать часть onExceptionOccurred
для подключения некоторой логики:
.onExceptionOccurred(
exchange -> {
//extra logic, like accessing the exchange headers
log.error(exchange.getException() == null ? "no message" : exchange.getException().getMessage());
}
)
см. https://camel.apache.org/error-handling-in-camel.html для получения дополнительной информации