我有一个系统,其中有多个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配置看起来如何?我在应用程序上的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" />
任何建议深表感谢。
最佳答案
我发现this thread的答案正确。
<mongo:mongo id="replicaSetMongo" replica-set="127.0.0.1:27017,localhost:27018"/>
我尝试过,并且也可以与单个主机一起使用,就像“ host”属性一样。