8月23 配置mongodb连接池 | docker 操作

一、配置mongodb连接池

属性类

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import lombok.Getter;
import lombok.Setter;

@Component
@PropertySource(value = "classpath:application-dev.properties")
@ConfigurationProperties(prefix = "mongo")
@Getter
@Setter
public class MongoSettingsProperties {

    private String host;
    private int port;
    private String database;
    private Integer minConnectionsPerHost = 0;
    private Integer maxConnectionsPerHost = 100;
    private Integer maxWaitTime = 120000;
    private Integer connectTimeout = 10000;
    private String username;
    private String password;
    private String authenticationDatabase;
}

配置文件

mongo.host=42.159.xx.xx
mongo.port=27018
mongo.database=loreal-mdm
mongo.username=
mongo.password=
mongo.options.min-connections-per-host=20
mongo.options.max-connections-per-host=20
mongo.options.max-wait-time=120000
mongo.options.connect-timeout=10000
mongo.authentication-database: admin

连接池 bean配置

import java.util.ArrayList;
import java.util.List;

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.SimpleMongoDbFactory;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;

import cn.com.connext.commenservice.bean.MongoSettingsProperties;

@Configuration
public class MongoConfig {

    //覆盖默认的MongoDbFacotry
    @Bean
    @Autowired
    public MongoDbFactory mongoDbFactory(MongoSettingsProperties properties) {
        //客户端配置(连接数,副本集群验证)
        MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
        builder.connectionsPerHost(properties.getMaxConnectionsPerHost());
        builder.minConnectionsPerHost(properties.getMinConnectionsPerHost());
        builder.maxWaitTime(properties.getMaxWaitTime());
        builder.connectTimeout(properties.getConnectTimeout());
        MongoClientOptions mongoClientOptions = builder.build();
        List<ServerAddress> serverAddresses = new ArrayList<>();
        // MongoDB地址列表
        ServerAddress serverAddress = new ServerAddress(properties.getHost(), properties.getPort());
        serverAddresses.add(serverAddress);
        // 连接认证
        List<MongoCredential> mongoCredentialList = new ArrayList<>();
        MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(properties.getUsername(),
                properties.getAuthenticationDatabase() != null ? properties.getAuthenticationDatabase() : properties.getDatabase(),
                properties.getPassword().toCharArray());
        mongoCredentialList.add(mongoCredential);
        //创建客户端和Factory
        MongoClient mongoClient = new MongoClient(serverAddresses,mongoClientOptions);
        //new MongoClient(serverAddresses, mongoCredential, mongoClientOptions);
        MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, properties.getDatabase());
        return mongoDbFactory;
    }

}

参考:

https://blog.csdn.net/daibang2182/article/details/80585004

http://www.xiaoqiangge.com/aritcle/1522033666922.html

二、docker 操作

找到mongodb 的配置文件,创建用户名密码

进入docker
docker exec -it <容器名>bash

whereis mongo

mongo: /usr/bin/mongo

[email protected]:/var/local# cd /usr/bin

进入mongo
./mongo 127.0.0.1:27017
db.createUser({user:"lorealmdm",pwd:"[email protected]",roles:[{role:"readWriteAnyDatabase",db:"admin"}]})

退出
docker restart 容器ID或容器名 :不管容器是否启动,直接重启容器 

ctrl+d 退出docker交互式

docker 中不能用vim编辑文件

更新来源

apt-get update

安装vim

apt-get install -y vim

参考:

https://blog.csdn.net/xinxu_wang/article/details/52441807

https://blog.csdn.net/fofabu2/article/details/78983741

关于角色:

https://blog.csdn.net/jianlong727/article/details/53889990

原文地址:https://www.cnblogs.com/lyon91/p/9525355.html

时间: 2024-11-01 13:33:13

8月23 配置mongodb连接池 | docker 操作的相关文章

Spring Boot配置MongoDB连接池

Spring Boot中通过依赖 spring-boot-starter-data-mongodb ,来实现 spring-data-mongodb 的自动配置. 但是默认情况下,Spring Boot 中,并没有像使用MySQL或者Redis一样,提供了连接池配置的功能.因此,我们需要自行重写 MongoDbFactory ,实现MongoDB客户端连接的参数配置扩展. 需要说明的是,MongoDB的客户端本身就是一个连接池,因此,我们只需要配置客户端即可. 配置文件 为了统一Spring B

spring配置数据源连接池

spring配置详解-连接池配置(转载) 一.连接池概述 数据库连接池概述: 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个 应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时 间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术

使用dbutils的PooledDB连接池,操作数据库

使用dbutils的PooledDB连接池,操作数据库. 这样就不需要每次执行sql后都关闭数据库连接,频繁的创建连接,消耗时间 如果是使用一个连接一直不关闭,多线程下运行一段时间后很容易出现OperationalError: (2006, ‘MySQL server has gone away’)这个错误. 使用PooledDB解决. # coding=utf-8 """ 使用DBUtils数据库连接池中的连接,操作数据库 OperationalError: (2006,

搭建spring工程配置数据源连接池

Spring作为一个优秀的开源框架,越来越为大家所熟知,前段时间用搭了个spring工程来管理数据库连接池,没有借助Eclipse纯手工搭建,网上此类文章不多,这里给大家分享一下,也作为一个手记. 工程结构: 注意:src目录下的applicationContext.xml是单元测试用的,作为web工程的话就使用WEB-INF下的applicationContext.xml. 1.下载jar包 这里需要下载很多spring的jar包,推荐去官网下载,很多人会说官网只提供maven和gradle下

JNDI配置c3p0连接池

CNDI是什么呢? 就是java命名和目录接口,是SUN公司提供的一种标准的Java命名系统接口. 不好理解?简单说呢,他就是一个资源,放在tomcat里面的一个资源,今天我们就把数据库连接池放到tomcat中,当然你也可以放别的东西,比如Been. ok!开始 首先我们新建web项目: 新建项目叫:JNDI_demo 然后在tomcat目录:F:\apache-tomcat-5.5.25\conf\Catalina\localhost下,创建一个资源. 命名就是:项目名.xml 在我这就叫:J

最新的Hibernate(hibernate-release-5.0.2.Final)里配置proxool连接池详细步骤

由于新版Hibernatet的lib/required/下的jar包和旧版的有很大的不同,因此配置proxool数据库连接池时有了些许的不同.在此,我写下配置的详细步骤以供其他童鞋参考 一 添加所需jar包到WEB-INF/lib下 分别是:hibernate-release-5.0.2.Final/lib/required下的所有jar包,proxool的两个jar包:proxool-0.9.1.jar和proxool-cglib.jar,然后是hibernate-proxool-5.0.2.

Spring 配置JNDI连接池

一.打开Tomcat/conf/context.xml文件,在标签<context></<context>中加入如下内容: <Resource  name="jdbc/testDBS"        auth="Container"            type="javax.sql.DataSource"            driverClassName="com.mysql.jdbc.Dri

Hibernate 配置C3P0 连接池

第一步在hibernate.cfg.xml配置 <!-- 连接池 --> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <!-- 最大连接数 --> <property name="hibernate.c3p0.max_size">

Druid使用起步—在javaWeb项目中配置监控 连接池

当我们在javaWEB项目中使用到druid来作为我们的连接池的时候,一定不会忘了添加监控功能.下面我们就来看一下,在一个简单的web项目中(尚未使用任何框架)我们是如果来配置我们的web.xml来完成我们的监控配置 首先是过滤器filter的配置,在web.xml中添加如下配置 <servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.supp