Apache Camel NotifyBuilder无法正常工作

时间:2019-06-24 15:16:29

标签: apache-camel

我正在尝试测试错误处理路线。 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,因为我可以看到我要求在此处打印的消息(正文和异常)。

请让我知道这里的问题。预先感谢。

0 个答案:

没有答案