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

Camel doCatch和onException优先级

蒯卓君
2023-03-14

对于特定的路由,我有一个带有doTry()-doCatch()对的路由,而通常是onException()。

onException(Exception.class)
    .handled(true)
    .log(LoggingLevel.ERROR, "An error occurred: ${exception.stacktrace}")
    .setBody(simple("${exception}"))
    .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500));

from("direct:mydirect")
        .routeId("myRoute")
        .doTry()
           .to("direct:internalroute")
        .doCatch(Exception.class)
            .log(LoggingLevel.ERROR, "EXCEPTION: ${exception.stacktrace}")
            .process(exceptionHandlerProcessor)
            .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500))
            .marshal(new JsonDataFormat(JsonLibrary.Jackson))
        .doFinally()
            .log("FINALLY")
        .endDoTry();
 throw new Exception("Catch me if you can!");

附言。删除onException()会调用doCatch()。然而,我有理由保留这两个。Camel版本为:org.apache.Camel:camel-cxf:2.21.0.000033-fuse-000001-redhat-1

共有1个答案

王杰
2023-03-14

总之,这不是一个优先级的问题,而是一个设计/实现的问题。参见文档:

onException子句是一种捕获而不是捕获异常的机制。也就是说,一旦定义了onException子句,它就会捕获发生在路由中任何一点的异常

 类似资料:
  • 问题内容: 我想知道如何或/和如何工作? 例如,如果我想获取display = 1的所有行 我可以做 如果我想要显示= 1或2的所有行 我可以做 但是,如果我想获取display = 1或2的所有行,并且其中 任何 内容,标签或标题包含 逻辑将如何发挥作用? 是我的猜测。但是我可以通过几种方式阅读。 它的读数是否为: 或作为 等等 问题答案: MySQL文档有一个很好的页面,其中包含有关哪些运算符

  • 我有多个读线程和一个写线程。如果我锁定其中一个读线程上的互斥体并从中发送广播,是否可以保证互斥体将由等待pthread_cond_wait()的写线程锁定,或者另一个正在等待pthread_mutex_lock()的读线程将锁定互斥体?主要问题是pthread_cond_wait()是否比pthread_mutex_lock()具有优先级? 如果不是,如何实现互斥锁始终由pthread_cond_

  • 在我的python应用程序中,我使用芹菜作为任务生产者和消费者,使用RabbitMQ作为代理。现在,我正在实施优先级排序。起初,它看起来根本不起作用,因为根据文档,我刚刚在队列中添加了参数。我更深入地研究了一下,发现了另一种优先级——消费者优先级和任务优先级。所以,现在,看起来有三种不同的优先顺序,我完全困惑了。你能给我解释一下区别吗? 队列最大优先级:即https://www.rabbitmq.

  • RabbitMQ有消息优先级的概念吗?我有一个问题,一些更重要的消息由于队列中不太重要的消息而被拖慢。我希望高优先级的优先,并移动到队列的前面。 我知道我可以用两个队列来近似计算,一个是“快”队列,另一个是“慢”队列,但这看起来像是一个黑客。 有人知道使用RabbitMQ的更好的解决方案吗?

  • 我有一个(我希望)简单的问题要问那些有就餐交响乐经验的人。 基于注释的调度允许设置优先级。如果我为此使用了SchduleParameters.FIRST_PRIORITY和SchduleParameters.LAST_PRIORITY参数,如果每个代理在每个滴答处执行这些方法,则整体调度程序如何解释这一点? > 首先,所有代理都使用ScheduleParameters执行该方法。首先是优先级,然后

  • 主要内容:深度优先搜索(简称“深搜”或DFS),广度优先搜索,总结前边介绍了有关图的 4 种存储方式,本节介绍如何对存储的图中的顶点进行遍历。常用的遍历方式有两种: 深度优先搜索和 广度优先搜索。 深度优先搜索(简称“深搜”或DFS) 图 1 无向图 深度优先搜索的过程类似于树的先序遍历,首先从例子中体会深度优先搜索。例如图 1 是一个无向图,采用深度优先算法遍历这个图的过程为: 首先任意找一个未被遍历过的顶点,例如从 V1 开始,由于 V1 率先访问过了,所以