使用Quarkus与Apache Camel(Gradle)的依赖及RouterBuilder问题
Quarkus + Apache Camel 依赖与RouteBuilder问题解决方案
一、先解决依赖找不到的问题
你当前的Gradle配置缺少Quarkus核心插件和版本统一管理,这才是导致依赖无法解析的关键:
- 必须添加Quarkus Gradle插件,它会自动配置正确的仓库和依赖解析逻辑
- 用Quarkus和Camel Quarkus的BOM(物料清单)统一版本,避免版本不兼容
修改你的build.gradle,补充以下核心配置:
plugins { id 'java' id 'io.quarkus' } repositories { mavenCentral() } dependencies { // 引入Quarkus和Camel Quarkus的版本BOM,统一管理所有依赖版本 implementation enforcedPlatform("io.quarkus:quarkus-bom:3.8.0") implementation enforcedPlatform("org.apache.camel.quarkus:camel-quarkus-bom:3.20.0") // 保留你原有的依赖 implementation("org.apache.camel.quarkus:camel-quarkus-http") implementation("org.apache.camel.quarkus:camel-quarkus-rest") implementation("org.apache.camel.quarkus:camel-quarkus-core") implementation("org.apache.camel.quarkus:camel-quarkus-direct") implementation("org.apache.camel.quarkus:camel-quarkus-caffeine") implementation("org.apache.camel.quarkus:camel-quarkus-jackson") } // 根据你的项目需求调整Java版本 java { sourceCompatibility = JavaVersion.VERSION_17 }
注意:上面的版本号是匹配的示例,你可以根据Quarkus官方文档调整为最新兼容版本
二、RouteBuilder(你可能打错成RouterBuilder)找不到的问题
首先纠正:Camel中定义路由的类是RouteBuilder,不是RouterBuilder。这个类已经包含在camel-quarkus-core依赖中,不需要额外引入原生Camel依赖。
在Quarkus中使用RouteBuilder的正确姿势:
- 创建类继承
org.apache.camel.builder.RouteBuilder - 加上
@ApplicationScoped注解,让Quarkus自动加载这个路由
示例代码:
import org.apache.camel.builder.RouteBuilder; import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped public class DemoRoute extends RouteBuilder { @Override public void configure() throws Exception { // 这里写你的路由逻辑 from("direct:demo") .log("Received message: ${body}"); } }
三、不需要添加原生Camel依赖
Camel Quarkus是完全适配Quarkus的优化版本,所有功能都通过camel-quarkus-*系列依赖提供,引入原生Camel依赖反而会导致版本冲突、打包异常等问题,绝对不要加。
内容的提问来源于stack exchange,提问作者Marian Klühspies
相关产品推荐
相关产品推荐

