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

是否为Camel配置全局错误处理程序?

何峰
2023-03-14

我正在尝试为我的骆驼上下文中的所有路由抛出的所有异常配置一个异常处理程序。我的做法是这样的,没有运气:

  1. 实例化默认骆驼上下文
  2. 从spring上下文检索RouteDefinition列表
  3. 通过调用CTX.AddRouteDefinitions()
  4. 将这些定义添加到camel上下文
  5. 从java dsl定义的RotueBuilder添加我的异常处理程序路由(ctx.addRoutes(new MyErrorHandlerRouteBuilder())
  6. 启动骆驼上下文

此时,在spring中定义的路由内部抛出的异常将由DefaultErrorHandler处理,而不是我试图定义的那个。下面是我的错误处理路由定义的样子

public class MyErrorHandlerRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
    onException(Exception.class)
        .routeId("errorHandlerRoute")
        .handled(true)
        .process(new Processor() {

            @Override
            public void process(Exchange exchange) throws Exception {
                Throwable caused = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
                // do some custom processing of the exception
            }
        })
        .stop();
}  

我还能尝试什么,或者我哪里错了?

共有1个答案

曹君墨
2023-03-14

创建一个抽象基类,并在configure方法中定义全局错误处理程序。然后在路由类中扩展该基类,并在其配置方法中首先调用super.configure()。

 类似资料:
  • 问题内容: 当我的网站是100%jQuery时,我曾经这样做: 为401错误设置全局处理程序。现在,我将angularjs与和一起使用,以向服务器发送(REST)请求。有什么办法可以类似地用角度设置全局错误处理程序吗? 问题答案: 我还在建立一个带有angular的网站,并且遇到了同样的障碍来处理全局401。当我遇到此博客文章时,我最终使用了HTTP拦截器。也许您会发现它和我一样有用。 “基于An

  • 我正在使用Apollo与用React编写的Web应用程序中的GraphQL服务器进行交互。我试图在应用程序中实现错误处理,并依赖于apollo-link-error。 现在,我需要处理两类错误: 可以在执行Apollo查询或变异的组件中本地处理的错误,即需要在其上显示上下文错误信息的无效表单字段 可以全局处理的错误,例如,通过在页面的某个位置显示toast通知来显示错误详细信息 显然,一旦错误在本

  • 问题内容: 有没有一种方法可以添加一个全局包罗万象的错误处理程序,可以在其中将响应更改为通用JSON响应? 我无法使用该信号,因为它不允许修改响应(http://flask.pocoo.org/docs/0.10/signals/)。 相反,所有信号处理程序均以未定义的顺序执行,并且不修改任何数据。 我宁愿不要包装该函数,因为感觉就像是内部API。我想我正在寻找类似的东西: 请注意,不会接受任何参

  • 我的任务是处理路由中所有传入的消息,并将它们保存到数据库中。我的路由从webservice(camel cxf)开始,然后处理到ejb并返回soap响应。 我决定使用驼峰sql组件。就我在记录传入消息方面没有任何问题而言: 但是我不知道如何处理异常并以SOAP消息的形式保存它们。 但它将原始消息保存在数据列中。有谁能帮忙吗?

  • 我使用spring-boot-starter-amqp1.4.2.Producer和消费者工作正常,但有时传入的JSON消息语法不正确。这会导致以下(正确)异常: 未来我可能会面临更多的例外。因此,我想配置一个全局错误处理程序,这样,如果任何一个消费者中存在任何异常,我就可以全局处理它。 注意:在这种情况下,消息根本没有到达消费者。我想在消费者中全局处理这类异常。 请找到以下代码: RabbitC

  • 问题内容: 我想全局拦截某些错误情况,以防止控制器自己处理错误。我认为我需要HTTP拦截器,但是我不确定如何从我的控制器中处理错误。 我有一个像这样的控制器: 和这样的HTTP拦截器: 这与浏览器重定向到“ /错误”路径一样有效。但在承诺抓的 也 执行了,我不希望这样。 我知道我可以编写代码,使其忽略404错误,但这是无法维护的。假设我进行修改以同时处理500个错误,那么我将不得不再次进行修改(以