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

如何在Apache Camel的BaseRouteBuilder中统一配置可覆盖的LoggingPolicy

解决方案

步骤1:修改BaseRouteBuilder,实现自动注入LoggingPolicy

通过Camel的interceptAddRouteDefinition拦截路由定义,自动为所有继承自BaseRouteBuilder的路由添加LoggingPolicy,同时提供可覆盖的默认greeting参数:

public abstract class BaseRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        // 保留原有异常处理逻辑
        onException()
            .handled(true)
            .log("Exception occured")
            .end();

        // 拦截路由定义,自动附加LoggingPolicy
        interceptAddRouteDefinition().process(exchange -> {
            RouteDefinition routeDef = exchange.getIn().getBody(RouteDefinition.class);
            routeDef.routePolicy(new LoggingPolicy(getLoggingGreeting()));
        });

        configRoutes();
    }

    abstract void configRoutes();

    // 默认greeting值,子类可重写此方法覆盖
    protected String getLoggingGreeting() {
        return "Hello";
    }
}

步骤2:调整子类RouteBuilder

  • HelloRouteBuilder:移除手动添加的routePolicy调用,直接继承默认配置:
@Component
public class HelloRouteBuilder extends BaseRouteBuilder {
    @Override
    void configRoutes() {
        from("timer:hello?repeatCount=1")
            .routeId("HelloRoute")
            .log("HelloRoute Completed");
    }
}
  • ByeRouteBuilder:重写getLoggingGreeting()方法,自定义greeting参数:
@Component
public class ByeRouteBuilder extends BaseRouteBuilder {
    @Override
    void configRoutes() {
        from("timer:bye?repeatCount=1")
            .routeId("ByeRoute")
            .log("ByeRoute Completed");
    }

    @Override
    protected String getLoggingGreeting() {
        return "Bye";
    }
}

方案说明

  • 自动生效:所有继承BaseRouteBuilder的路由会自动应用LoggingPolicy,无需逐个修改
  • 默认配置:大部分路由使用默认的"Hello" greeting,无需额外代码
  • 灵活覆盖:少数需要自定义的路由只需重写getLoggingGreeting()方法即可
  • 无侵入:原有路由逻辑完全保留,仅移除手动的policy配置
  • 边界控制:未继承BaseRouteBuilder的路由(如AnotherRoute)不受任何影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:24