Apache Camel return 生产者错误

Apache Camel return producer errors

我有一个简单的代理配置,如下所示:

from("netty-http://0.0.0.0:8080/xyz")
    .toD("netty-http:" + "https://abc/xyu")
    .process(this::processResponse);

但是当 abc 服务 return 400 出现可读错误时,camel return 自己的异常:

org.apache.camel.component.netty.http.NettyHttpOperationFailedException: Netty HTTP operation failed invoking

我能做些什么来简单地return来自生产者服务的错误?

您可以尝试将 throwExceptionOnFailure 选项设置为 false。 camel 中的 Http 组件默认启用此功能,可能是为了像 camel 中的任何其他异常一样轻松捕获和处理故障。

启用后,您可以通过 Exchange 属性获取异常和有关异常的详细信息,在此过程中,您可能可以转换为 NettyHttpOperationFailedException 以获取有关它的更多信息。

Exception cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);

我在码头遇到了类似的问题 (Apache-Camel / Camel-Jetty / Don't return exception-stack-trace in case of 401 response)

就我而言,选项 bridgeEndpoint=truethrowExceptionOnFailure=false 解决了问题(http 401 除外)

from("netty-http://0.0.0.0:8080/xyz")
    .toD("netty-http:" + "https://abc/xyu?bridgeEndpoint=true&throwExceptionOnFailure=false")
    .process(this::processResponse);