我在我的项目中做 Apache Camel PoC。使用 Camel JDBC 组件时,我遇到了一个问题。
我可以使用 JDBC 组件从数据库中读取数据。但我需要始终使用 Timer 组件。根据 Camel 文档,JDBC 组件不能在 from() 语句中使用。我尝试在文档中给出的 from() 语句中使用 Direct 组件,但它不起作用。
下面是我的代码:
from("direct:zh_ICS_Test")
//from("timer://myTimer?period=2s")
.setBody(constant("select * from ZH_ICS_TEST"))
.to("jdbc:myDataSource")
.split(body())
.convertBodyTo(String.class)
.to("file://" + dst);
下面是控制台输出:
[main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.12.1 (CamelContext: camel-1) 正在启动 [main] INFO org.apache.camel.management.ManagedManagementStrategy - JMX 已启用 [main] INFO org .apache.camel.impl.converter.DefaultTypeConverter - 已加载 176 个类型转换器 [main] INFO org.apache.camel.impl.DefaultCamelContext - StreamCaching 未使用。如果使用流,则建议启用流缓存。在http://camel.apache.org/stream-caching.html查看更多细节[main] INFO org.apache.camel.impl.DefaultCamelContext - 路由:route1 开始并使用:Endpoint[direct://zh_ICS_Test] [main] INFO org.apache.camel.impl.DefaultCamelContext - 共有 1 条路由,其中1 开始。[main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.12.1 (CamelContext: camel-1) 在 0.798 秒内启动 [main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel 2.12.1 ( CamelContext:camel-1) 正在关闭 [main] INFO org.apache.camel.impl.DefaultShutdownStrategy - 开始正常关闭 1 路由(超时 300 秒)[Camel (camel-1) thread #1 - ShutdownTask] INFO org. apache.camel.impl.DefaultShutdownStrategy - 路由:route1 关闭完成,从端点 [direct://zh_ICS_Test] [main] INFO org.apache.camel.impl 消费。
如果我使用 Timer 而不是 Direct 组件,则上面的代码有效。我不想总是使用 Timer,只需要执行一次我的查询。我正在使用带有 JDK7 的 Camel 2.12.1。
有人可以帮忙吗?