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

Apache camel-句柄和重试异常

景理
2023-03-14

我正在使用JavaDSL来配置路由。我有一个类似于下面给出的路由。

    RouteBuilder builder = new RouteBuilder() {
        public void configure() {
           // onException(Exception.class).bean("bean");

            onException(Exception.class).to("anotherProcessor");

            from("queue:a").bean("someBean").to("processor");
        }
    };

在做了一些活动后,我该如何处理异常?在异常时,我尝试配置处理器和bean来重新引发异常。不管怎样,camel都在将异常设置为exchange,但没有破坏异常。

我在junit测试用例中这样做。我正在使用OneException处理器处理异常。在处理器内部,我正在进行断言。断言错误由camel自动处理,测试不会被标记为通过/失败。

共有1个答案

蔚楷
2023-03-14
from(CONSUMER)
    .doTry()
    .doCatch(SocketTimeoutException.class,Exception.class)
            .beanRef("ErrorProcessor","processErrorMessage")
            .to("freemarker:ErrorResponseTransformer.ftl")
    .end()
    .to(PRODUCER)

尝试捕捉

onException(Exception.class)
        .handled(true)
        .process(new Processor() {
            public void process(Exchange e) throws Exception {
                helper.processErrorMessage(e);
                log.info("Response error: "
                        + MessageHelper.extractBodyAsString(e.getIn()));
                log.info("Response error: "
                        + MessageHelper.extractBodyAsString(e.getOut()));
            }
        });

on Exception处理异常并将其作为响应错误消息处理以显示。你甚至可以放一个。至(ERRORDESTINATION)或窃听以继续正常流量。

或者使用camel的errorHandler。

希望这有帮助。

 类似资料:
  • 在书写代码与阅读代码的时候,经常会看到这一句代码: typedef void *HANDLE ,它是何方神圣呢?如何理解呢? 不理解它的时候,感觉它很神奇,知道它以后,它就是个typedef的定义,只不过是void*类型罢了,也就是HANDLE等价于void *,我们可以叫它披着句柄皮的指针(PS:指针和句柄是有区别的,在这说句废话); 对于void* 神通广大,因为它作为函数参数or函数返回值,

  • 当你用作图命令时,MATLAB用多种图形对象创建图形,例如线,文本,表面(完整列表见Graphics Objects)。所有图形对象都有控制其性能的属性。你可以在MATLAB中询问每种属性的取值并设置大部分的属性值。 每当MATLAB创建一个图形对象时,它就给该对象赋以一个标识符(称为句柄)。可以用此句柄访问对象属性。若你想作下列操作,句柄图形很有用。 修改图形外观。 通过编写能直接创建和操作对象

  • 对于来自Android应用程序的所有网络流量,我们都使用retrofit/okhttp3。到目前为止,一切似乎都进行得相当顺利。 然而,我们现在偶尔会出现应用程序/进程用完文件句柄的情况。 null null 如何防止OkHttp创建太多的文件句柄?

  • 所以我的问题是:我的测试是对的?在我的应用程序中缓存方法查找有一些问题?或者我需要在需要使用时总是进行查找?如果我不创建缓存,性能就太低了。 谢谢你

  • 问题内容: 我正在尝试自己学习编程,但仍在尝试掌握它。我收到以下错误: java.io.IOException:句柄无效 这是我的代码 我相信,每当我调用该方法时,都会出现错误,当我尝试显示默认构造函数中的字节数时,它可以很好地工作并显示。 问题答案: 好了,在实际开始使用它之前,请先关闭构造函数的块。将结束部分从构造函数中移到完成后将被调用的位置,例如在main 下方调用或单独的close方法。

  • 你可以创建任何MATLAB函数的句柄,然后用这些句柄作为函数链接的途径。函数句柄主要用来传递自变量列表给其他函数,用句柄执行函数或求值。 在MATLAB中,通过在函数名前加上符号@构造函数句柄。下面例子为SIN函数创建一个函数句柄,然后赋值给变量fhandle: fhandle = @sin; 用MATLAB的fevel函数对函数句柄求值。下面的plot_fhandle函数接收一个函数句柄和数据