gpt4 book ai didi

java - Camel 没有捕捉到异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:28 24 4
gpt4 key购买 nike

.from("seda:rest_upload")
.process(new Processor() {
@Override
public void process(Exchange exchange) {
if(true){
throw new RuntimeException();
}})
.to("seda:parsed_csv")
.onException(Exception.class).process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
logger.warn("Error");
}
});

但是 logger.warn("Error"); 没有被调用。

我做错了什么?

如何为 Camel 路线注册全局异常处理程序?

最佳答案

在路由顶部移动 onException block ,不要忘记 end() 终止符。

end() 告诉 Camel onException block 在哪里结束。如果你忽略它,Camel 会将其视为一个 onException block 。只是会有路由从 seda 消耗并且没有输出处理器,因为 onException() 之后的所有内容都会成为 onException block 的一部分。


特定于路由的异常处理:处理路由 seda:rest_upload

中发生的异常
from("seda:rest_upload")
.onException(Exception.class).process(exchange -> logger.warn("Error")).end()
.process(e -> {throw new RuntimeException();})
.to("seda:parsed_csv");

from("seda:parsed_csv").to("log:parsed_csv");

from("timer:tmr?period=1000")
.setBody(constant("mock"))
.to("seda:rest_upload");

全局异常处理:处理当前RouteBuilder中所有路由的异常

onException(Exception.class).process(exchange -> logger.warn("Error")); //There is no need for end(), whole block is part of onException block

from("seda:rest_upload")
.process(e -> {throw new RuntimeException();})
.to("seda:parsed_csv");

from("seda:parsed_csv").to("log:parsed_csv");

from("timer:tmr?period=1000")
.setBody(constant("mock"))
.to("seda:rest_upload");

关于java - Camel 没有捕捉到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579145/

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