亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

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

application.yml 配置

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

用來獲取配置參數的類

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 { /** 基礎連接參數 */ private String database; private String username; private String password; @NotNull private List<String> address; /** 客戶端連接池參數 */ @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; /** 心跳檢測發送頻率 */ @Min(value = 2000) private int heartbeatFrequencyMs; /** 最小的心跳檢測發送頻率 */ @Min(value = 300) private int minHeartbeatFrequencyMs; /** 計算允許多少個線程阻塞等待時的乘數,算法:threadsAllowedToBlockForConnectionMultiplier*connectionsPerHost */ @Min(value = 1) private int threadsAllowedToBlockForConnectionMultiplier; /** 心跳檢測連接超時時間 */ @Min(value = 200) private int heartbeatConnectionTimeoutMs; /** 心跳檢測讀取超時時間 */ @Min(value = 200) private int heartbeatReadTimeoutMs; /** 每個host最大連接數 */ @Min(value = 1) private int connectionsPerHost; /** 每個host的最小連接數 */ @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) { //創建客戶端參數 MongoClientOptions options = mongoClientOptions(properties); //創建客戶端和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)) { //創建認證客戶端 MongoCredential mongoCredential = MongoCredential.createScramSha1Credential( username, database, password.toCharArray()); mongoClient = new MongoClient(serverAddresses.get(0), mongoCredential, options); } else { //創建非認證客戶端 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客戶端參數配置 * * @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; }}

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 日韩一级精品视频在线观看 | 国产女乱淫真高清免费视频 | 亚洲国产香蕉视频欧美 | 亚洲精品久中文字幕 | 日本三级带日本三级带黄国产 | 欧美成人免费一级人片 | 好吊色青青青国产欧美日韩 | 久久久99精品免费观看 | 成人18网址在线观看 | 免费看的黄色录像 | 久久久久伊人 | 久久午夜网 | 中文字幕欧美日韩久久 | 久久精品视频播放 | 久久国产成人福利播放 | 久青草免费视频手机在线观看 | 污视频免费在线播放 | 久久综合色区 | 我看逼逼 | 久久亚洲国产成人影院 | 久久综合久久综合久久 | 91精品国产综合久久精品 | 生活片毛片 | 欧美大黄视频 | 亚洲欧美日韩不卡一区二区三区 | 国产黄在线播放免费观看 | 韩国一级毛片大全女教师 | 欧美视频中文字幕 | 欧美日韩国产人成在线观看 | 国产精品黄色 | 日本韩国欧美一区 | 国产成人精品一区二区视频 | 极品国产一区二区三区 | 成人精品一区二区三区校园激情 | 亚洲中国日本韩国美国毛片 | 免费国产成人手机在线观看 | 亚洲一区二区成人 | 国产精品国产三级在线高清观看 | 免费网址在线观看 | 国产成人亚洲精品乱码在线观看 | 日韩欧美视频在线播放 |