我正在尝试使用以下配置在本地使用jdbc运行camel-k。
集成 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");
}
}
应用程序属性:
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
似乎 quarkus 构建没有启动并且数据源没有被创建。 该示例在 k8s 上运行良好。 我将camel-k与jbang和其他组件(如activemq)一起使用,它们工作得很好。
你有什么想法吗?谢谢!
camel-jbang 不理解quarkus 特定的连接池等等。然而,这可能是我们可以添加到camel-jbang 中的一些常见功能,如数据库等。
您可以将通用数据源配置为 bean,并让camel-jbang 使用它,直到我们有适合camel-jbang OOTB 的东西为止。 https://issues.apache.org/jira/browse/CAMEL-20681