与多个mongo路由器的多个MongoDB连接(mongos.exe)

时间:2013-10-21 13:15:32

标签: java spring mongodb tomcat amazon-web-services

我有一个系统,其中有多个mongo分片(在大型AWS实例上),3个mongo配置(在小型AWS实例上)和3个mongo路由器“mongos.exe”运行(这些与应用程序在同一个实例上,即2个Tomcat和1个Java应用程序。)

所以我的问题是,如果每个应用程序(例如tomcat 1)与该框上的mongos.exe进行通信,并且只有那个,或者它是否应该与其他2个框上的mongos.exe连接(我'我认为这里没有单点故障。)

在mongo文档http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/中,您可以使用以下内容连接到多个mongo: -

// or, to connect to a replica set, with auto-discovery of the primary, supply a seed list of members
MongoClient mongoClient = new MongoClient(Arrays.asList(
    new ServerAddress("localhost", 27017),
    new ServerAddress("localhost", 27018),
    new ServerAddress("localhost", 27019)));

这是要走的路吗?如果是这样,我的最后一个问题是,Spring配置看起来如何?应用程序上的弹簧配置如下所示: -

<mongo:mongo host="${db.host}" port="${db.port}">
    <mongo:options threads-allowed-to-block-for-connection-multiplier="${db.threadsAllowedToBlockForConnectionMultiplier}"
                   connections-per-host="${db.connectionsPerHost}"
                   connect-timeout="${db.connectTimeout}"
                   max-wait-time="${db.maxWaitTime}"
                   auto-connect-retry="${db.autoConnectRetry}"
                   socket-timeout="${db.socketTimeout}"/>
</mongo:mongo>

<mongo:db-factory dbname="${db.name}" mongo-ref="mongo" />

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我找到了this thread正确答案。

<mongo:mongo id="replicaSetMongo" replica-set="127.0.0.1:27017,localhost:27018"/>

我尝试过,也可以使用单个主机,就像“主机”属性一样。