Я пытаюсь проверить маршрут обработки ошибок.NotificationBuilder
не работает должным образом (всегда возвращает false).
Создан основной маршрут и тестовый маршрут для проверки основного маршрута.Я использовал Spring Boot - все остальные тесты работают нормально, поэтому я думаю, что нет никаких проблем с настройкой.
errorHandler(deadLetterChannel("seda:errorQueue").maximumRedeliveries(5).redeliveryDelay(1000));
from("file://{{inputFolder}}?delay=10s&noop=true")
.routeId("InputFolderToTestSedaRoute")
.setHeader("myHeader", constant("MY_HEADER_CONSTANT_VALUE"))
.to("seda://testSeda")
.log(LoggingLevel.DEBUG, "**** Input File Pushed To Output Folder *****");
Также существует маршрут ошибки.
from("seda:errorQueue")
.routeId("ErrorHandlingRoute")
.log("***** error body: ${body} *****")
.log("***** Exception Caught: ${exception} *****");
Я тогда использовалadviceWith()
, чтобы выбросить исключение в основной маршрут.
Затем создал NotifyBuilder.
NotifyBuilder errorRouteNotifier = new NotifyBuilder(camelContext)
// .wereSentTo("seda:errorQueue")
.fromRoute("ErrorHandlingRoute*")
.whenReceived(1)
.create();
Затем я отправил сообщение, используя ProducerTemplate
.Но когда я проверяю условие соответствия, оно всегда терпит неудачу.
boolean done = errorRouteNotifier.matches(5, TimeUnit.SECONDS);
assertTrue("Should have thrown Exception and caught at errorQueue", done);
Но сообщение направляется на ErrorHandlingRoute
, поскольку я вижу сообщения (тело и исключение), которые я просил напечатать там.
Пожалуйста, дайте мне знать, в чем здесь проблема.Заранее спасибо.