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

Camel-在异常时停止处理路线

田晨
2023-03-14

我有一条处理hl7消息的骆驼路线。处理成功后,我希望将其传递给另一个endpointb以进行进一步处理。

但是如果在processHL7中发生任何异常,我有一个catch块来做一些处理。当我进入doCatch并遇到end时,我想停止处理,但这并没有发生。无论发生什么,流都将到达endpointb。当我进入doCatch块时,如何停止?

from("direct:a") 
    .doTry()
      .to("bean:processHL7?method=process")        
    .doCatch(HL7Exception.class)
      .to("direct:ErrorACK")
      .transform(ack())
    .end()
    .transform(ack())       
    .to("direct:b");

共有1个答案

别宏盛
2023-03-14

这应该有效。

from("direct:a") 
    .doTry()
      .to("bean:processHL7?method=process")        
    .doCatch(HL7Exception.class)
      .to("direct:ErrorACK")
      .transform(ack())
      .stop()
    .end()
    .transform(ack())       
    .to("direct:b");

您可以使用stop()停止路由的进一步处理。

 类似资料:
  • 我在camelcontext.xml文件的主路由中配置了camel循环,它将调用请求处理路由3次。我还配置了onException xml处理程序(将handled设置为true)。但是,当第一次迭代出现异常时,执行控制会转到onException块,但是循环不会停止处理,相反,其他两次迭代(第二次和第三次)也会发生。

  • 我是骆驼新手,有一些关于异常处理的问题。我需要有3重试尝试的消息处理,超过尝试限制后,它需要发送消息到deadletterchannel。如何组合maximumRedeliveries和ErrorHandler?

  • 我是Camel Apache的新手,在异常处理方面遇到了一些麻烦。我要做的是捕捉SalesforceException,然后根据StatusCode采取不同的操作。 例如,当statusCode>=500时,我必须尝试重新传递消息。这是一个技术错误。当statusCode<500时,我必须将请求和响应组合在一起,并将其放在FailureQueue上。

  • 我有一个文件,我需要读取,打印出整数,捕获异常并继续显示下一个整数,依此类推,直到没有更多的整数。 该文件包含:12 5 sd 67 4 cy 我想让它显示: 12 5 输入错误67 4 输入错误 但是,它只给我12,5,接着输入错误,它就停了。我尝试过将所有内容放入while循环中,但它会无休止地循环,并出现输入异常。 我错过了什么,以便循环继续读取下一个int等等?

  • 出现运行时异常--这应该会导致事务回滚。 我希望能够截获异常,并回复一个真正的消息(而不是异常)给客户机。因此,我开始实现一个错误处理程序: 其中: null null null 如何配置camel,既防止事务中的消息刷新,又能够将异常转换为已处理的错误消息?