无法使用直接组件

时间:2015-07-17 02:16:51

标签: spring mongodb apache-camel

我已配置以下路由来查询本地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的调用,而是定时器组件的调用。

1 个答案:

答案 0 :(得分:2)

direct组件仅在您向其发送消息时进行路由,就像在Java中直接调用方法一样,例如,当您在java实例上调用方法时。另一方面timer独立运行,每X周期触发一条新的空消息。

详情请见

此常见问题解答