Camel errorHandler / deadLetterChannel REST响应

时间:2017-11-24 06:00:55

标签: apache-camel

我有一个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");

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用第二条路径作为DLQ,例如direct:dead然后将消息首先发送到真实DLQ,然后再进行消息转换以返回友好响应。

errorHandler(deadLetterChannel("direct:dead")

from("direct:dead")
  .to("{{activemq.webhook.dlq.queue}}")
  .transform(constant("Sorry something was wrong"));
相关问题