当前位置: 首页 > 知识库问答 >
问题:

Camel mongo组件不支持多个mongo DB连接

侯向文
2023-03-14

我们的Camel Mongo DB组件不支持多个Mongo DB连接。默认情况下,它在所有mongoendpoint中使用单个Mongodb bean

问题:

我为两个数据库创建了两个不同的mongo bean实例,并分别进行了身份验证。在Spring创建了两个MongoDBeans实例

使用DB初始化/创建mongoendpoint(具有不同DB的多个endpoint)时,它将第一个mongoendpointdb连接到所有endpoint。所以所有的mongoendpoint都指向同一个数据库,这个数据库是在创建第一个mongoendpoint时首先添加的。

代码如下:

<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组件中的if检查,从而允许mongo连接查找在MongoDbComponent中创建的每个mongoendpoint。JAVA这样,它可以用于多个DB连接

你知道为什么mongo组件在camel中只允许一个mongoDB连接吗,是因为存在任何问题吗


受保护的endpointcreateEndpoint(字符串uri、剩余字符串、映射参数)抛出异常{
//TODO:这只支持一个mongodb
//如果(db==null){
db=CamelContextHelper.mandatoryLookup(getCamelContext(),remaining,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
感谢您在这方面的帮助

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

-斯里

共有1个答案

萧宁
2023-03-14

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

仅供参考:

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

吉拉机票链接-https://issues.apache.org/jira/browse/CAMEL-10644

谢谢,
潘尼尔

 类似资料:
  • 你好,我开始学习mongoDB查询 我对聚合有一些理解上的问题 例如,我有以下文档: 等等。 我如何提出请求,我将拥有谁: 和a 产生如下结果: 非常感谢你的帮助。

  • 我是StackOverflow的新手,请尽可能清楚。 我有一个接受多文件输入的控制器, FE控制器它工作得很好,但如果我调用我的应用程序的RestController,它就不起作用。RestController 这是我在@Request estBody Request@Request estBody上的请求。 我尝试了不同的消费,如消费=“多部分/ *”,但它们不起作用。 您能给我一些建议,说明我

  • 我有一个Spring Boot应用程序,可以连接到不同的MySQL数据库。我计划将连接池支持添加到此应用程序。Tomcat JDBC连接池(默认的Spring Boot池)是否为我的每个数据库支持多个池?

  • 本文向大家介绍iOS 支持多个域,包括了iOS 支持多个域的使用技巧和注意事项,需要的朋友参考一下 示例 应用程序支持的每个域都需要提供其自己的apple-app-site-association文件。如果每个域提供的内容不同,则文件的内容也将更改以支持相应的路径。否则,可以使用相同的文件,但是需要在每个受支持的域中访问该文件。

  • Hibernate会支持MongoDB事务吗? MongoDB4.0增加了对多文档ACID事务的支持。但是Hibernate仍然不支持这一点,我不能简单地使用@transactional(Grails framework)注释为MongoDB操作添加事务性行为。我得自己写事务性管理代码。有没有人有更好的解决方案或者什么时候Hibernate支持它?谢谢! 引自Hibernate:MongoDB不支

  • 伙计们,我对Spring Data MongoDB提供的BigDecimal值支持有疑问,有人能帮我提供一些关于它的消息吗,是否会支持这种类型,或者是否有人知道一种解决方法来满足我的需求。这就是交易:我正在做一个项目,我们使用MongoDB作为DB,Spring作为框架,我们希望将数据库中应该获取金钱值的字段保存为BigDecimal,我已经读到mongo只接受double作为浮点数,但我认为这种