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

如何在运行时通过Exchange获取构建Route的RouteBuilder类?

如何通过Exchange获取Route对应的RouteBuilder类?

可以在运行时通过Exchange对象获取到构建Route的RouteBuilder类,借助Apache Camel的核心API就能实现,以下是修改后的代码示例:

class SimplePingRoute : RouteBuilder() {
    override fun configure() {
        from("timer://foo?fixedRate=true&period=1000")
            .routeId("pong-demo-app")
            .process { exc ->
                // 从Exchange中获取当前Route
                val currentRoute = exc.route
                // 获取Route的定义信息
                val routeDefinition = currentRoute.routeDefinition
                // 获取构建该Route的RouteBuilder实例
                val routeBuilder = routeDefinition.routeBuilder
                // 获取对应的Class对象
                val routeBuilderClass = routeBuilder.javaClass
                
                // 这里可以根据需求使用Class对象,比如打印类名
                println("当前Route对应的RouteBuilder类: ${routeBuilderClass.name}")
            }
            .to("log:pong")
    }
}

关键说明:

  • exc.route能拿到当前Exchange所属的Route实例,通过它可以获取到RouteDefinition,而RouteDefinition中保存了创建该Route的RouteBuilder实例。
  • 如果你只需要类名而非实例,直接调用routeBuilderClass.simpleName就能获取短类名,调用name获取全限定类名。
  • 主流Camel版本(2.x、3.x、4.x)都支持RouteDefinition.getRouteBuilder()方法,Spring Boot集成Camel的场景也完全适用。
  • 若遇到RouteBuilder被代理包装的罕见情况,可以通过routeBuilder.javaClass.superclass获取实际的RouteBuilder类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:20:13