当前位置: 首页 > 知识库问答 >
问题:

Apache camel onException向原始消息添加错误详细信息

漆雕亮
2023-03-14

我已将此异常处理添加到camel路由

 .onException(BeanCreationException.class, ValidationException.class)
     .handled(true)
     .process(new OnExceptionProcessor())
     .to("errorQueue0").id("errorQueue")
     .end()
public class OnExceptionProcessor implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        Exception cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
        exchange.getIn().setHeader("FailedBecause", cause.getMessage());
    }
}

当我从错误队列中读回此消息时,找不到此标头。您知道如何将错误详细信息与原始消息一起添加到错误队列吗

共有1个答案

薛宜
2023-03-14

这可能是上下文问题,因为您所在的处理器由错误处理程序调用。

或者,可以从处理器方法返回要在标头中设置的字符串值。顺便说一下,这也提高了处理器的可测试性。

然后可以使用此返回值直接在错误处理程序路由中设置标头。

.setHeader("FailedBecause", method(new OnExceptionProcessor()))
 类似资料:
  • 我有一个基本的SQS队列,它使用redrive策略触发Lambda,在5次重试后将失败的消息发送到DLQ。我读到Lambda应该在消息中添加关于错误的消息属性 除了在DLQ中查看消息时,我没有看到任何来自Lambda的ErrorCode、ErrorMessage属性外,其他一切都正常工作。有人用这个吗?

  • 本文向大家介绍IIS7.5 显示详细错误信息的方法,包括了IIS7.5 显示详细错误信息的方法的使用技巧和注意事项,需要的朋友参考一下 使用Win7/Win2008/R2操作系统的用户在不断增加,Win7下测试程序时,如果程序出 错,IIS7会提示HTTP Error 500 - Internal Server Error (500 - 内部服务器错误) 的简单错误信息。这些简单信息对应用户来说比

  • 问题内容: 我想实现以下目标: 但是我得到的是: 关于如何实现这一目标的任何线索?如何在Python 2和3中做到这一点? 问题答案: 我会这样做,因此更改它的类型将不需要也将其更改。 更新1 这是保留原始回溯的略微修改: 更新2 对于Python 3.x,我的第一次更新中的代码在语法上是不正确的,并且在2012年5月16日对PEP 352的更改中撤消了 启用属性的想法(我的第一次更新发布于201

  • 我正在使用AndroidStudio 1.5.1,当我打开AndroidStudio时,我在控制台中遇到一个错误-“加载项目时出错:无法加载3个方面的详细信息…” 有人对我如何解决这个问题有什么想法吗?

  • 我在处理spring集成流中的错误时遇到了一个问题。流程的工作方式如下:我的入口点是消息驱动的通道适配器->路由器->过滤器->转换器->服务激活器->数据库。我已经使用自定义消息侦听器容器编写了自己的错误处理程序,它的工作方式与预期一致,但是当我出现异常时,我需要将原始消息保存到数据库中。 问题是,当我从数据库中获得异常时,错误处理策略会重新使用一个MessageHandleException,