无法使用直接组件在生产者端点上查询 MongoDb

Cannot query MongoDb on producer endpoint using direct component

我配置了以下路由来查询我的本地 MongoDB 实例。 该实例 运行 在端口 27017 上的本地主机上,未经身份验证。

路线是:

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>

路由启动正常,但没有数据发送到文件端点。

如果我用计时器替换直接:组件端点:组件数据写入文件端点:

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");

问题是为什么direct组件不发起对MongoDB的调用,而timer组件发起。

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

查看更多详情

还有一些常见问题解答