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

本地用JBang运行Camel K JDBC组件报错求助

问题描述

我尝试在本地使用JBang运行配置好的Camel K JDBC集成,相关配置如下:

集成DSL文件 KamelKJdbcRouter.java

import org.apache.camel.builder.RouteBuilder;

// camel-k: dependency=camel:jdbc
// camel-k: dependency=mvn:io.quarkus:quarkus-jdbc-postgresql

public class KamelKJdbcRouter extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("timer://foo?period=10000")
                .setBody(constant("SELECT data FROM test LIMIT 5 OFFSET 0"))
                .to("jdbc:default")
                .to("log:info");
    }

}

application.properties 配置

quarkus.datasource.jdbc.url=jdbc:postgresql://postgres:5432/test
quarkus.datasource.username=postgresadmin
quarkus.datasource.password=admin123
quarkus.datasource.db-kind=postgresql

运行命令

jbang run -Dcamel.jbang.version=4.2.0 camel@apache/camel run KamelKJdbcRouter.java

报错信息

Caused by: java.lang.IllegalArgumentException: No default DataSource found in the registry
        at org.apache.camel.component.jdbc.JdbcComponent.createEndpoint(JdbcComponent.java:67)
        at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:170)
        at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:804)
        ... 34 more

该示例在K8s上运行正常,用JBang运行Camel K的其他组件(如ActiveMQ)也没问题,但Quarkus构建未生效,数据源未创建,请问该如何解决?

解决方案

问题根源是JBang默认用Camel Main模式启动,不支持Quarkus自动配置,导致数据源未被初始化。按以下步骤修复:

1. 补充Quarkus相关依赖

在KamelKJdbcRouter.java的注释依赖中添加Camel Quarkus核心及JDBC扩展:

// camel-k: dependency=camel:jdbc
// camel-k: dependency=mvn:io.quarkus:quarkus-jdbc-postgresql
// camel-k: dependency=mvn:org.apache.camel.quarkus:camel-quarkus-core
// camel-k: dependency=mvn:org.apache.camel.quarkus:camel-quarkus-jdbc

2. 指定Quarkus模式运行

修改启动命令,明确启用Quarkus运行环境:

jbang run -Dcamel.jbang.version=4.2.0 camel@apache/camel run --quarkus KamelKJdbcRouter.java

3. 显式指定配置文件(可选)

如果配置文件未自动加载,添加--property-file参数指定路径:

jbang run -Dcamel.jbang.version=4.2.0 camel@apache/camel run --quarkus --property-file=application.properties KamelKJdbcRouter.java

关键说明

  • Camel JBang默认的Main模式不兼容Quarkus的配置体系,无法解析quarkus.datasource前缀的配置。
  • 启用--quarkus参数后,Camel切换到Quarkus运行时,Quarkus会自动根据配置创建并注册default数据源到Camel注册表,jdbc:default端点就能正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:02:41