我已配置以下路由来查询本地MongoDB实例。 该实例在端口27017上的localhost上运行,无需身份验证。
路线是:
from("direct:start")
.to("mongodb:mongoBean?" +
"database=camel-source" +
"&collection=RacingEvents" +
"&operation=getDbStats")
.convertBodyTo(String.class)
.to("file://E:/data/test.txt");
我的mongoBean在spring中被定义为:
<bean id="mongoBean" class="com.mongodb.Mongo">
<constructor-arg name="host" value="localhost" />
<constructor-arg name="port" value="27017" />
</bean>
路由启动正常,但没有数据发送到文件端点。
如果我用计时器替换direct:component端点:组件数据被写入文件端点:
from("timer://foo?delay=1&repeatCount=1")
.to("mongodb:mongoBean?" +
"database=camel-source" +
"&collection=RacingEvents" +
"&operation=getDbStats")
.convertBodyTo(String.class)
.to("file://E:/data/test.txt");
问题是为什么直接组件不会启动对MongoDB的调用,而是定时器组件的调用。
答案 0 :(得分:2)
direct
组件仅在您向其发送消息时进行路由,就像在Java中直接调用方法一样,例如,当您在java实例上调用方法时。另一方面timer
独立运行,每X周期触发一条新的空消息。
详情请见
此常见问题解答