【问题标题】:Apache camel set mongodb collection dynamicallyApache骆驼动态设置mongodb集合
【发布时间】:2015-08-28 08:40:11
【问题描述】:

我正在尝试创建一个端点依赖于传入消息的路由。目的是写入不同数据库和集合中的 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


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      使用 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")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多