我正在尝试创建一个端点依赖传入消息的路由。目的是在不同的数据库和集合中写入mongodb。
我正在寻找一种简单的方法来从邮件标题中获取信息并将其写入<to uri=""/>
<route>
<from uri="jms:topic:BUS_IN" />
<to uri="mongodb:myDb?database=${header.someValue}&collection=storyTeaser&operation=save" />
</route>
非常感谢
答案 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&collection=old&dynamicity=true&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")