我们的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}}&collection={{jobmonitorCollection}}&operation=insert"/>
</route
<route id="jobEnd" startupOrder="2">
<from uri="direct:jobEnd" />
<to uri="bean:jobMonitorUpdateQueryBuilder" />
<to uri="mongodb:DbLocal?database={{requestDb}}&collection={{jobmonitorCollection}}&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);
//}
Camel论坛链接:http://camel.465427.n5.nabble.com/Camel-mongo-db-does-not-support-multiple-mongo-DB-tp5765468.html
-Sree
答案 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