我正在尝试测试错误处理路线。 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
,因为我可以看到我要求在此处打印的消息(正文和异常)。
请让我知道这里的问题。预先感谢。