首页 文章

Camel errorHandler / deadLetterChannel REST响应

提问于
浏览
0

我有一个Camel休息 endpoints (Jetty),它验证和处理传入的请求 . 除了特定的异常处理程序(onException)之外,它还使用DLQ错误处理程序(errorHandler(deadLetterChannel ...)),它设置为重试3次 - 如果消息被移动到DLQ不成功 .

我的问题是,如果发生意外的异常而不是完整的异常体,我如何仍然将用户友好的错误消息返回给客户端?我是否在errorHandler上缺少一些配置?我试图在驼峰单元测试(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

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

    errorHandler(deadLetterChannel("direct:dead")
    
    from("direct:dead")
      .to("{{activemq.webhook.dlq.queue}}")
      .transform(constant("Sorry something was wrong"));
    

相关问题