我们的 Camel Mongo DB 组件不支持多个 mongo 数据库连接。默认情况下,它在所有 mongo 端点中使用单个 Mongodb bean。
问题:
我为两个具有各自身份验证的数据库创建了两个不同的 mongo bean 实例。并且在 Spring 创建了两个 mongodb beans 实例。
当使用 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 组件中的 if 检查,从而允许 mongo 连接查找在 MongoDbComponent.java 中创建的每个 mongo 端点。这样它就可以用于多个数据库连接。
知道为什么 mongo 组件在 camel 中只允许一个 mongoDB 连接,是因为存在任何问题吗?
protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
//TODO: 这只支持一个 mongodb
//if (db == null) {
db = CamelContextHelper.mandatoryLookup(getCamelContext(), remaining, Mongo.class);
LOG.debug("解析名称为{}的连接为{}", remaining, db);
//
Camel 论坛链接:http://camel.465427.n5.nabble.com/Camel-mongo-db-does-not-support-multiple-mongo-DB-tp5765468.html
-Sree
最佳答案
此功能已在 camel 2.18.2、2.19.0 中实现。请使用这些版本在您的项目中实现多个数据库。
仅供引用:
https://issues.jboss.org/browse/ENTESB-5884
Jira 工单链接 - https://issues.apache.org/jira/browse/CAMEL-10644
谢谢,
潘尼尔
关于mongodb - Camel-mongo组件不支持多mongo DB连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29771455/
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame
考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d
我已经按照https://github.com/wayneeseguin/rvm#installation上的说明通过RVM安装了Ruby.有关信息,我有所有文件(readline-5.2.tar.gz、readline-6.2.tar.gz、ruby-1.9.3-p327.tar.bz2、rubygems-1.8.24.tgz、wayneeseguin-rvm-stable.tgz和yaml-0.1.4.tar.gz)在~/.rvm/archives目录中,我不想在任何目录中重新下载它们方式。当我这样做时:sudo/usr/bin/apt-getinstallbuild-essent
我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re
我有一个ruby脚本可以打开与Apple推送服务器的连接并发送所有待处理的通知。我看不出任何原因,但当Apple断开我的脚本时,我遇到了管道损坏错误。我已经编写了我的脚本来适应这种情况,但我宁愿只是找出它发生的原因,这样我就可以在第一时间避免它。它不会始终根据特定通知断开连接。它不会以特定的字节传输大小断开连接。一切似乎都是零星的。您可以在单个连接上发送的数据传输或有效负载计数是否有某些限制?看到人们的解决方案始终保持一个连接打开,我认为这不是问题所在。我看到连接在3次通知后断开,我看到它在14次通知后断开。我从未见过它能超过14点。有没有人遇到过这种类型的问题?如何处理?
我的意思是之前建立的那个DB=Sequel.sqlite('my_blog.db')或DB=Sequel.connect('postgres://user:password@localhost/my_db')或DB=Sequel.postgres('my_db',:user=>'user',:password=>'password',:host=>'localhost')等等。Sequel::Database类没有名为“disconnect”的公共(public)实例方法,尽管它有一个“connect”。也许有人已经遇到过这个问题。我将不胜感激。 最佳答案
Ruby是否支持(找不到更好的词)非转义(逐字)字符串?就像在C#中一样:@"c:\ProgramFiles\"...或者在Tcl中:{c:\ProgramFiles\} 最佳答案 是的,您需要在字符串前加上%前缀,然后是描述其类型的单个字符。你想要的是%q{c:\programfiles\}。镐书很好地涵盖了这一点here,部分是通用分隔输入。 关于ruby-Ruby是否支持逐字字符串?,我们在StackOverflow上找到一个类似的问题: https:/