Apache camel动态设置mongodb集合

问题描述 投票:0回答:2

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

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

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

非常感谢

mongodb apache apache-camel endpoint nosql
2个回答
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>

然后在第一条路线的uri中添加参数“dynamicity”:

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

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")
© www.soinside.com 2019 - 2024. All rights reserved.