午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

springboot配置mongodb連接池的方法步驟

瀏覽:17日期:2023-03-28 16:11:27

application.yml 配置

mongodb: address: localhost:27017 database: soms username: admin password: 123456 # 連接池配置 clientName: soms-task # 客戶端的標(biāo)識,用于定位請求來源等 connectionTimeoutMs: 10000 # TCP連接超時,毫秒 readTimeoutMs: 15000 # TCP讀取超時,毫秒 poolMaxWaitTimeMs: 3000 #當(dāng)連接池?zé)o可用連接時客戶端阻塞等待的時長,單位毫秒 connectionMaxIdleTimeMs: 60000 #TCP連接閑置時間,單位毫秒 connectionMaxLifeTimeMs: 120000 #TCP連接最多可以使用多久,單位毫秒 heartbeatFrequencyMs: 20000 #心跳檢測發(fā)送頻率,單位毫秒 minHeartbeatFrequencyMs: 8000 #最小的心跳檢測發(fā)送頻率,單位毫秒 heartbeatConnectionTimeoutMs: 10000 #心跳檢測TCP連接超時,單位毫秒 heartbeatReadTimeoutMs: 15000 #心跳檢測TCP連接讀取超時,單位毫秒 connectionsPerHost: 100 # 每個host的TCP連接數(shù) minConnectionsPerHost: 5 #每個host的最小TCP連接數(shù) #計(jì)算允許多少個線程阻塞等待可用TCP連接時的乘數(shù),算法: threadsAllowedToBlockForConnectionMultiplier*connectionsPerHost,當(dāng)前配置允許10*20個線程阻塞 threadsAllowedToBlockForConnectionMultiplier: 10

用來獲取配置參數(shù)的類

import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import org.springframework.validation.annotation.Validated;import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;import javax.validation.constraints.Size;import java.util.List;@Data@Validated@Component@ConfigurationProperties(prefix = 'mongodb')public class MongoClientOptionProperties { /** 基礎(chǔ)連接參數(shù) */ private String database; private String username; private String password; @NotNull private List<String> address; /** 客戶端連接池參數(shù) */ @NotNull @Size(min = 1) private String clientName; /** socket連接超時時間 */ @Min(value = 1) private int connectionTimeoutMs; /** socket讀取超時時間 */ @Min(value = 1) private int readTimeoutMs; /** 連接池獲取鏈接等待時間 */ @Min(value = 1) private int poolMaxWaitTimeMs; /** 連接閑置時間 */ @Min(value = 1) private int connectionMaxIdleTimeMs; /** 連接最多可以使用多久 */ @Min(value = 1) private int connectionMaxLifeTimeMs; /** 心跳檢測發(fā)送頻率 */ @Min(value = 2000) private int heartbeatFrequencyMs; /** 最小的心跳檢測發(fā)送頻率 */ @Min(value = 300) private int minHeartbeatFrequencyMs; /** 計(jì)算允許多少個線程阻塞等待時的乘數(shù),算法:threadsAllowedToBlockForConnectionMultiplier*connectionsPerHost */ @Min(value = 1) private int threadsAllowedToBlockForConnectionMultiplier; /** 心跳檢測連接超時時間 */ @Min(value = 200) private int heartbeatConnectionTimeoutMs; /** 心跳檢測讀取超時時間 */ @Min(value = 200) private int heartbeatReadTimeoutMs; /** 每個host最大連接數(shù) */ @Min(value = 1) private int connectionsPerHost; /** 每個host的最小連接數(shù) */ @Min(value = 1) private int minConnectionsPerHost;}

配置類

package com.alkin.soms.common.mongo;import com.mongodb.MongoClient;import com.mongodb.MongoClientOptions;import com.mongodb.MongoCredential;import com.mongodb.ServerAddress;import org.apache.commons.lang.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.mongodb.MongoDbFactory;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.SimpleMongoDbFactory;import org.springframework.data.mongodb.core.convert.*;import org.springframework.data.mongodb.core.mapping.MongoMappingContext;import java.util.ArrayList;import java.util.List;@Configurationpublic class MongoConfig { private final Logger log = LoggerFactory.getLogger(MongoConfig.class); /** * 自定義mongo連接池 * * @param properties * @return */ @Bean @Autowired public MongoDbFactory mongoDbFactory(MongoClientOptionProperties properties) { //創(chuàng)建客戶端參數(shù) MongoClientOptions options = mongoClientOptions(properties); //創(chuàng)建客戶端和Factory List<ServerAddress> serverAddresses = new ArrayList<>(); for (String address : properties.getAddress()) { String[] hostAndPort = address.split(':'); String host = hostAndPort[0]; int port = Integer.parseInt(hostAndPort[1]); ServerAddress serverAddress = new ServerAddress(host, port); serverAddresses.add(serverAddress); } String username = properties.getUsername(); String password = properties.getPassword(); String database = properties.getDatabase(); MongoClient mongoClient; if (StringUtils.isNotEmpty(username) && StringUtils.isNotEmpty(password)) { //創(chuàng)建認(rèn)證客戶端 MongoCredential mongoCredential = MongoCredential.createScramSha1Credential( username, database, password.toCharArray()); mongoClient = new MongoClient(serverAddresses.get(0), mongoCredential, options); } else { //創(chuàng)建非認(rèn)證客戶端 mongoClient = new MongoClient(serverAddresses, options); } SimpleMongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, database); log.info('mongodb注入成功'); return mongoDbFactory; } @Bean(name = 'mongoTemplate') @Autowired public MongoTemplate getMongoTemplate(MongoDbFactory mongoDbFactory) { return new MongoTemplate(mongoDbFactory); } /** * mongo客戶端參數(shù)配置 * * @return */ public MongoClientOptions mongoClientOptions(MongoClientOptionProperties properties) { return MongoClientOptions.builder().connectTimeout(properties.getConnectionTimeoutMs()).socketTimeout(properties.getReadTimeoutMs()).applicationName(properties.getClientName()).heartbeatConnectTimeout(properties.getHeartbeatConnectionTimeoutMs()).heartbeatSocketTimeout(properties.getHeartbeatReadTimeoutMs()).heartbeatFrequency(properties.getHeartbeatFrequencyMs()).minHeartbeatFrequency(properties.getMinHeartbeatFrequencyMs()).maxConnectionIdleTime(properties.getConnectionMaxIdleTimeMs()).maxConnectionLifeTime(properties.getConnectionMaxLifeTimeMs()).maxWaitTime(properties.getPoolMaxWaitTimeMs()).connectionsPerHost(properties.getConnectionsPerHost()).threadsAllowedToBlockForConnectionMultiplier( properties.getThreadsAllowedToBlockForConnectionMultiplier()).minConnectionsPerHost(properties.getMinConnectionsPerHost()).build(); } @Bean public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context, BeanFactory beanFactory) { DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory); MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context); try { mappingConverter.setCustomConversions(beanFactory.getBean(MongoCustomConversions.class)); } catch (NoSuchBeanDefinitionException ignore) { } // Don’t save _class to dao mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null)); return mappingConverter; }}

到此這篇關(guān)于springboot配置mongodb連接池的方法步驟的文章就介紹到這了,更多相關(guān)springboot配置mongodb連接池內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 91亚洲国产成人精品一区二区三 | 四虎视频国产精品免费 | 成人xxx | 在线综合视频 | 日韩av免费在线看 | 久久成人综合网 | 欧美天堂在线观看 | 日韩在线免费看 | 亚洲国产精品一区二区三区 | 日韩精品在线不卡 | 欧美日韩综合网 | 国产伦精品一区二区三区照片 | 黄色成年视频 | 午夜国产福利视频 | 偷拍欧美亚洲 | 久久精品天堂 | 亚洲免费观看视频 | 欧美日韩高清免费 | 在线观看毛片网站 | 成人免费看片在线观看 | 顶级嫩模啪啪呻吟不断好爽 | 国产99在线| 免费日本黄色网址 | 亚洲综合久 | 欧美精品一区二区三区四区 | 久久免费少妇高潮久久精品99 | 国产精品久久久久精 | 亚洲四虎影院 | 你懂的在线视频网站 | 国产毛片网 | 最好看的中文字幕 | 美女天堂网 | 亚洲第一页综合 | 四虎最新入口 | 六月色播 | 探花风韵犹存少妇88av | 久久国产在线视频 | 99视频这里有精品 | 欧美天堂在线视频 | 黄色一级大片在线免费看国产一 | 免费观看毛片视频 |