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

如何使用OnException在Apache Camel中正确处理异常

颛孙子民
2023-03-14

我将我的jms队列更改为JMS1。然而,当我执行代码时,我得到一个异常。

我的期望是,每当我得到异常时,我的bean类都应该被调用,但事实并非如此。

runtimeCamelException:org.apache.camel.FailedToCreateRouteException:在以下位置创建路由route1失败:>>>到[jms1:queue:finalqSource]<<<在route:route[[from[jms:queue:testqSource]]->[onException[[class J...因为解析终结点:jms1://queue:finalqSource失败,原因是:找不到Scheme:jms1的组件

<camelContext id="jmsContext" html" target="_blank">xmlns="http://camel.apache.org/schema/spring">   
  <onException>
  <exception>org.apache.camel.RuntimeCamelException</exception>
  <exception>org.apache.camel.ResolveEndpointFailedException</exception>
    <!-- <handled><constant>true</constant></handled> -->           
      <bean ref="exceptionListener" method="orderFailed" />
  </onException>
  <route>
    <from uri="jms:queue:testQSource" />
    <to uri="jms1:queue:FinalQSource" /><!--
  </route>
</camelContext>

共有1个答案

赫连棋
2023-03-14

这将不起作用,因为当camel试图解析您的路由时,它会抛出异常。onException块将只捕获在路由执行期间引发的异常

要测试异常处理,请使用适当的camel测试指南-http://camel.apache.org/testing.html

我建议模拟您的一个endpoint以返回异常,这里的示例是https://github.com/christian-posta/camel-sandbox/blob/master/one-off/src/test/java/posta/testmockexceptions.java

MockEndpoint mockException = MockEndpoint.resolve(context, "mock:exception");
    mockException.whenAnyExchangeReceived(new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
            System.out.println("i got here...");
            throw new RuntimeException("fail!");
        }
});
 类似资料:
  • 首先,我是iOS和Swift的新手,来自Android/Java编程的背景。因此,对我来说,在空间不足、文件权限问题或其他任何可能发生在文件上的情况下(根据我的经验,已经发生过),捕捉试图写入文件时的异常是第二天性。我也明白在Swift中,异常不同于Android/Java的异常,所以这不是我在这里要问的。 我试图使用NSFileHandle追加到一个文件中,如下所示: 但是,和函数都指示它们抛出

  • 假设我有一个类Person,具有不同数据类型的不同属性,我在我的主方法中有这样的代码: 现在,假设高度的赋值引发了一个异常,例如InvalidCastException,代码将停止执行,并且可能会记录一些东西,以防我有一个记录表。问题是,从日志中,我无法确切地理解哪一行和赋值抛出了异常。 是否有任何方法可以捕获异常,并能够记录(数据库中的某个位置)哪个赋值引发异常,以及在这种情况下针对哪种类型的强

  • 问题内容: 假设我有某种游戏。我有一个buyItem函数,如下所示: 如果我对该路由进行垃圾邮件处理,直到扣除用户余额(第二次查询),则用户余额仍为正。 我尝试过的 问题是将在第一〜5项要求。因此,这也不起作用。 我们如何处理这种情况?如果重要的话,我正在使用Sails.JS框架。 问题答案: 通过该方法,Sails 1.0现在具有完整的事务支持。例: 更新资料 正如一些评论者所指出的,启用连接池

  • 代码错误 行,我在控制台中得到如下错误:无法找到元素:{“method”:“id”,“selector”:“loginusername”}命令持续时间或超时:262毫秒

  • 问题内容: 昨天我对一个问题的回答之一是建议我确保我的数据库可以正确处理UTF-8字符。我该如何使用MySQL? 问题答案: 更新: 简短答案-您几乎应该始终使用字符集和排序规则。 更改数据库: 看到: 亚伦对此答案的评论如何使MySQL正确处理UTF-8 utf8_general_ci和utf8_unicode_ci有什么区别 转换指南:https : //dev.mysql.com/doc/r

  • 我已经将我的nodejs应用程序配置为使用MongoDB。我可以成功地连接和添加数据到我的mongodb实例。我的应用程序配置如下(敏感信息编辑): 如果我点击endpoint,那么pizza文档就会很好地在数据库中创建,但我注意到连接从未关闭;这意味着endpoint从不将“all good”字符串作为响应发送。而且,对的任何后续请求都会抛出以下错误: 我似乎没有正确处理promise和asyn