我有一个Camel rest端点(Jetty),用于验证和处理传入的请求。除了特定的异常处理程序(onException)之外,它还使用了一个DLQ错误处理程序(errorHandler(deadLetterChannel ...)),它设置为重试3次 - 如果消息被移动到DLQ不成功。
我的问题是,如果发生意外的异常而不是完整的异常体,我如何仍然将用户友好的错误消息返回给客户端?错误处理程序中是否缺少某些配置? 我试图在驼峰单元测试(DeadLetterChannelHandledExampleTest)和动作2(第11章)中找到一些例子,但似乎没有一个例子可以用于这种情况。
代码是:
.from(ROUTE_URI)
.errorHandler(deadLetterChannel("{{activemq.webhook.dlq.queue}}")
.onPrepareFailure(new FailureProcessor())
.maximumRedeliveries(3)
.redeliveryDelay(1000))
.bean(ParcelProcessor.class, "process");
感谢您的帮助!
答案 0 :(得分:0)
使用第二条路径作为DLQ,例如direct:dead
然后将消息首先发送到真实DLQ,然后再进行消息转换以返回友好响应。
errorHandler(deadLetterChannel("direct:dead")
from("direct:dead")
.to("{{activemq.webhook.dlq.queue}}")
.transform(constant("Sorry something was wrong"));