gpt4 book ai didi

apache-camel - 如何处理多条路由中的异常或故障

转载 作者:行者123 更新时间:2023-12-04 18:20:47 24 4
gpt4 key购买 nike

在处理多条路由之间的异常时,我遇到了一些问题。

作为一个java开发者的角度,我想把一些公共(public)逻辑提取到一个公共(public)路由中,这样其他路由就可以直接调用公共(public)路由,而不用处处包含公共(public)逻辑。(比如route-version函数调用)但是当涉及到错误处理,我发现它有点棘手。

例如:

//main logic 1
from("direct:route1")
.doTry()
.to("direct:common")
.doCatch(Exception.class)
.log("Error in route1")
.end()

//main logic 2
from("direct:route2")
.doTry()
.to("direct:common")
.doCatch(Exception.class)
.log("Error in route2")
.end()

//common logic
from("direct:common")
.to("mock:commonlogic")

问题是当从“mock:commonlogic”端点抛出一些异常时,异常不会被在 route1 和 route2 中定义的 doTry...doCatch block 捕获。似乎可以在公共(public)路由范围内处理异常。但我想要的是通用路由只是“抛出”异常,而“调用者”路由自己处理它。有没有办法做到这一点?

谢谢

最佳答案

您需要禁用公共(public)路由中的错误处理。然后从公共(public)路由抛出的任何异常都不会由任何错误处理程序处理,并传播回调用者路由,该路由具有 try .. catch block 。

from("direct:common")
.errorHandler(noErrorHandler())
.to("mock:commonlogic")

关于apache-camel - 如何处理多条路由中的异常或故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com