У меня есть маршрут (с верблюдом 2.23.1), например:
from("file://not.existing.dir?autoCreate=false&startingDirectoryMustExist=true&consumer.bridgeErrorHandler=true")
.onException(Exception.class)
.handled(true)
.log(LoggingLevel.ERROR, "...exception text...")
.end()
.log(LoggingLevel.INFO, "...process text...")
...
(я тоже пробовал только с &bridgeErrorHandler
, поскольку в соответствии с последним документом Префикс consumer.
, похоже, больше не нужен.)
Согласно документ startingDirectoryMustExist
:
| initialDirectoryMustExist |[...] Будет сгенерировано исключение, если каталог не существует.|
выдается следующее исключение:
org.apache.camel.FailedToCreateRouteException: Failed to create route route1:
Route(route1)[[From[file://not.existing.dir?autoCreate=false...
because of Starting directory does not exist: not.existing.dir
...
, но, несмотря на документ и описание [consumer.]bridgeErrorHandler
это передается вызывающей стороне , то есть ни "exception text
", ни "process text
" не печатаются.
Существует модульный тест FileConsumerBridgeRouteExceptionHandlerTest
, который охватывает consumer.bridgeErrorHandler
, так что я думаю, что это работает в принципе.Может ли быть так, что [consumer.]bridgeErrorHandler
не работает в сочетании с исключением, выданным startingDirectoryMustExist
?
Должен ли я написать свой собственный [consumer.]exceptionHandler
, как упомянуто в этом ответе на " Camel - остановка маршрута, когда каталог-потребитель не существует"?
В списке рассылки 2014 также есть запись , сообщающая о сходном поведении с startingDirectoryMustExist
иconsumer.bridgeErrorHandler
.
ОБНОВЛЕНИЕ
После TRACEing и отладки с помощью кода я обнаружил, что исключение распространяется следующим образом:
FileEndpoint.createConsumer()
throw new FileNotFoundException(...);
--> RouteService.warmUp()
throw new FailedToCreateRouteException(...)
--> DefaultCamelContext.doStart()
(re)throw e
--> ServiceSupport.start()
(re)throw e
Я не смог найти точку, где bridgeErrorHandler
вступает в игру.
Установка точек останова на конструкторе BridgeExceptionHandlerToErrorHandler
и всех его handleException()
методах не останавливается ни на одном из них.
Я естьвсе еще чего-то не хватает?