Apache Camel NotifyBuilder не работает должным образом - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь проверить маршрут обработки ошибок.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, поскольку я вижу сообщения (тело и исключение), которые я просил напечатать там.

Пожалуйста, дайте мне знать, в чем здесь проблема.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...