Camel-mongodb组件不支持多个mongoDB连接

时间:2015-04-21 11:50:46

标签: mongodb apache-camel

我们的Camel Mongo数据库组件不支持多个mongo数据库连接。默认情况下,它在所有mongo端点中使用单个Mongodb bean
问题:
 
我已经为两个具有相应身份验证的数据库创建了两个不同的mongo bean实例。并且在春天创建了两个mongodb bean实例。

当使用DB初始化/创建mongo端点(具有不同DB的多个端点)时,它将第一个mongo端点db连接到所有端点。因此,所有mongo端点都指向同一个数据库,该数据库在创建第一个mongo端点时首先添加。

以下代码:

<bean id="DbLocal" name="DbLocal" class="com.mongodb.MongoClient">
    <constructor-arg index="0">
        <bean class="com.mongodb.MongoClientURI">
            <constructor-arg index="0" value="mongodb://<user1>:<pwd1>@<host>:<port>/DB1" />
        </bean>
    </constructor-arg>
</bean>                    

<bean id="appDb" name="appDb" class="com.mongodb.MongoClient">
    <constructor-arg index="0">
        <bean class="com.mongodb.MongoClientURI">
            <constructor-arg index="0" value="mongodb://<host>:<port>/DB2" />
        </bean>
    </constructor-arg>
</bean>

<route id="jobStart" startupOrder="1">
    <from uri="direct:jobStart" />
    <to uri="bean:jobMonitorInsertQueryBuilder" />
    <to uri="mongodb:appDb?database={{requestDb}}&amp;collection={{jobmonitorCollection}}&amp;operation=insert"/>
</route                             
<route id="jobEnd" startupOrder="2">
    <from uri="direct:jobEnd" />
    <to uri="bean:jobMonitorUpdateQueryBuilder" />
    <to uri="mongodb:DbLocal?database={{requestDb}}&amp;collection={{jobmonitorCollection}}&amp;operation=update" />
</route>

我尝试通过注释来检查camel mongo组件,从而允许mongo连接查找MongoDbComponent.java中创建的每个mongo端点。这样它就可以用于多个数据库连接
知道为什么mongo组件只允许在camel中使用一个mongoDB连接,这是因为任何现有的问题吗?


protected Endpoint createEndpoint(String uri,String remaining,Map parameters)抛出异常{
// TODO:这只支持一个mongodb
// if(db == null){
db = CamelContextHelper.mandatoryLookup(getCamelContext(),剩余,Mongo.class);
LOG.debug(“将名称{}的连接解析为{}”,剩余,db);
//}


https://github.com/apache/camel/blob/master/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbComponent.java

感谢这方面的任何帮助。

Camel论坛链接:http://camel.465427.n5.nabble.com/Camel-mongo-db-does-not-support-multiple-mongo-DB-tp5765468.html

-Sree

1 个答案:

答案 0 :(得分:1)

此功能已在camel 2.18.2,2.19.0中实现。请使用这些版本在您的项目中实现多个DB。

仅供参考:

https://issues.jboss.org/browse/ENTESB-5884

Jira Ticket Link - https://issues.apache.org/jira/browse/CAMEL-10644

谢谢,
Panneer