mongodb java连接池_MongoDB设置连接池操作百万级以上数据

import java.util.ArrayList;

import java.util.List;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.data.mongodb.MongoDbFactory;

import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

import com.mongodb.MongoClient;

import com.mongodb.MongoClientOptions;

import com.mongodb.MongoCredential;

import com.mongodb.ServerAddress;

@Configurationpublic classMongoConfig {//覆盖默认的MongoDbFactory

@Bean

MongoDbFactory mongoDbFactory(MongoSettingsProperties mongoSettingsProperties) {//客户端配置(连接数、副本集群验证)

MongoClientOptions.Builder builder = newMongoClientOptions.Builder();

builder.connectionsPerHost(mongoSettingsProperties.getMaxConnectionsPerHost());

builder.minConnectionsPerHost(mongoSettingsProperties.getMinConnectionsPerHost());if (mongoSettingsProperties.getReplicaSet() != null) {

builder.requiredReplicaSetName(mongoSettingsProperties.getReplicaSet());

}

builder.threadsAllowedToBlockForConnectionMultiplier(

mongoSettingsProperties.getThreadsAllowedToBlockForConnectionMultiplier());

builder.serverSelectionTimeout(mongoSettingsProperties.getServerSelectionTimeout());

builder.maxWaitTime(mongoSettingsProperties.getMaxWaitTime());

builder.maxConnectionIdleTime(mongoSettingsProperties.getMaxConnectionIdleTime());

builder.maxConnectionLifeTime(mongoSettingsProperties.getMaxConnectionLifeTime());

builder.connectTimeout(mongoSettingsProperties.getConnectTimeout());

builder.socketTimeout(mongoSettingsProperties.getSocketTimeout());builder.sslEnabled(mongoSettingsProperties.getSslEnabled());

builder.sslInvalidHostNameAllowed(mongoSettingsProperties.getSslInvalidHostNameAllowed());

builder.alwaysUseMBeans(mongoSettingsProperties.getAlwaysUseMBeans());

builder.heartbeatFrequency(mongoSettingsProperties.getHeartbeatFrequency());

builder.minHeartbeatFrequency(mongoSettingsProperties.getMinHeartbeatFrequency());

builder.heartbeatConnectTimeout(mongoSettingsProperties.getHeartbeatConnectTimeout());

builder.heartbeatSocketTimeout(mongoSettingsProperties.getHeartbeatSocketTimeout());

builder.localThreshold(mongoSettingsProperties.getLocalThreshold());

MongoClientOptions mongoClientOptions=builder.build();//MongoDB地址列表

List serverAddresses = new ArrayList<>();for(String address : mongoSettingsProperties.getAddress()) {

String[] hostAndPort= address.split(":");

String host= hostAndPort[0];

Integer port= Integer.parseInt(hostAndPort[1]);

ServerAddress serverAddress= newServerAddress(host, port);

serverAddresses.add(serverAddress);

}

System.out.println("serverAddresses:" +serverAddresses.toString());//连接认证

List mongoCredentialList = new ArrayList<>();if (mongoSettingsProperties.getUsername() != null) {

mongoCredentialList.add(MongoCredential.createScramSha1Credential(

mongoSettingsProperties.getUsername(),

mongoSettingsProperties.getAuthenticationDatabase()!= null ?mongoSettingsProperties

.getAuthenticationDatabase() : mongoSettingsProperties.getDatabase(),

mongoSettingsProperties.getPassword().toCharArray()));

}

System.out.println("mongoCredentialList:" +mongoCredentialList.toString());//创建客户端和Factory

MongoClient mongoClient = newMongoClient(serverAddresses,mongoCredentialList, mongoClientOptions);

MongoDbFactory mongoDbFactory= newSimpleMongoDbFactory(mongoClient,mongoSettingsProperties.getDatabase());returnmongoDbFactory;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值