Apache camel动态设置mongodb集合

时间:2015-08-28 08:40:12

标签: mongodb apache apache-camel endpoint nosql

我正在尝试创建一个端点依赖传入消息的路由。目的是在不同的数据库和集合中写入mongodb。

我正在寻找一种简单的方法来从邮件标题中获取信息并将其写入<to uri=""/>

<route> <from uri="jms:topic:BUS_IN" /> <to uri="mongodb:myDb?database=${header.someValue}&amp;collection=storyTeaser&amp;operation=save" /> </route>

非常感谢

2 个答案:

答案 0 :(得分:1)

您可以添加第二个设置标题变量的路径:

<route>
        <from uri="jms:topic:BUS_IN" />
        <camel:setHeader headerName="CamelMongoDbDatabase">
            <camel:simple>testmydb</camel:simple>
        </camel:setHeader>
        <camel:setHeader headerName="CamelMongoDbCollection">
            <camel:simple>mycollection</camel:simple>
        </camel:setHeader>
        <to uri="jms:queue:mongodb.out"/>
    </route>

然后添加参数&#34; dynamicity&#34;在你的第一条路线的uri:

<route>
        <from uri="jms:queue:mongodb.out" />
        <to uri="mongodb:myDb?database=new_test&amp;collection=old&amp;dynamicity=true&amp;operation=save"/>
    </route>

答案 1 :(得分:0)

使用Apache Camels toD函数https://camel.apache.org/message-endpoint.html将允许您在传递消息时动态设置URI。 URI允许使用简单的语言https://camel.apache.org/simple.html,例如,我们可以使用文件名来生成集合。

以下示例路线:

from(input).routeId("SampleRoute")
.toD("mongodb3://mongoBean?database=myDB&collection=${file:onlyname.noext}&" +
    "operation=insert&createCollection=true")