You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Camel在doCatch的onWhen内调用bean提示方法未定义问题咨询

问题根因
  • 你所使用的bean(Class<FailureBean>, String)不是RouteBuilder类提供的实例方法,在路由DSL链式调用中直接调用该方法自然会触发未定义报错。Camel将调用Bean生成判断谓词的能力封装在静态工具类中,需要导入对应静态方法、调整方法调用写法即可修复。
修复方案

方案一:适配原书写法修复

  1. 在EmailRouter.java文件头部添加静态导入:
import static org.apache.camel.builder.Builder.method;
  1. 将报错行的bean方法替换为method即可:
.onWhen(method(FailureBean.class, "httpAuthFail"))

你现有定义的FailureBean无需做任何改动,静态方法可以被Camel直接调用。

方案二:简化实现,无需自定义Bean

可以直接用Lambda表达式完成401状态码判断,省去维护FailureBean的成本,替换报错行代码为以下内容即可:

.onWhen(exchange -> {
    HttpOperationFailedException e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, HttpOperationFailedException.class);
    return e.getStatusCode() == 401;
})

注意补充导入org.apache.camel.Exchange类。

内容的提问来源于stack exchange,提问作者BenW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:18:04