当前位置: 首页 > article >正文

springboot-mongodb-连接配置

文章目录

  • 配置Maven依赖
  • URL格式
  • 单节点配置示例
  • 副本集(含连接池配置)

配置Maven依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

URL格式

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

mongodb:// 前缀,代表这是一个Connection String
username:password@ 如果启用了鉴权,需要指定用户密码
hostX:portX 复制集成员的ip:port信息,多个成员以逗号分割
/database 鉴权时,用户帐号所属的数据库
?options 指定额外的连接选项

注意:
连接串中的账号密码包含特殊字符!@#$%^&*()_+= 您需要在连接串中对特殊字符进行转义处理,转义规则如下:

! : %21
@ : %40
# : %23
$ : %24
% : %25
^ : %5e
& : %26
* : %2a
( : %28
) : %29
_ : %5f
+ : %2b
= : %3d

单节点配置示例

在 Spring Boot 中,你可以使用 YAML 格式的配置文件来配置 MongoDB 连接。下面是一个示例 YAML 配置文件,展示了如何配置 Spring Boot Starter Data MongoDB:

spring:
  data:
    mongodb:
      host: localhost  # MongoDB 主机地址
      port: 27017  # MongoDB 端口号
      database: myDatabase  # 要连接的数据库名称
      username: myUsername  # MongoDB 用户名
      password: myPassword  # MongoDB 密码
      authentication-database: admin  # 认证数据库
      auto-index-creation: true  # 是否自动创建索引
      field-naming-strategy: org.springframework.data.mapping.model.CamelCaseAbbreviatingFieldNamingStrategy  # 字段命名策略

副本集(含连接池配置)

在这个示例中,spring.data.mongodb 下的属性配置了 MongoDB 的连接信息和一些其他选项。你可以根据实际的情况进行调整和配置。
除了上述示例中展示的属性外,你还可以配置其他详细的连接池信息,例如连接池大小、连接超时等。以下是一些常见的连接池配置属性:

spring:
  data:
    mongodb:
      database: ariecms
      authentication-database: admin
      auto-index-creation: true
      field-naming-strategy: org.springframework.data.mapping.model.CamelCaseAbbreviatingFieldNamingStrategy
      uri: "mongodb://root:xxx@xxx1.com:3717,xxx2.com:3717/admin?replicaSet=mgset-xxx&readPreference=secondaryPreferred"
      connection-pool:
        minSize: 20
        maxSize: 600
        maxWaitTime: 10000
        maxConnectionIdleTime: 180000
        maxConnectionLifeTime: 600000
        maxConnecting: 600

通过正确的Connection String来连接MongoDB复制集时,客户端会自动检测复制集的主备关系,当主备关系发生变化时,自动将写切换到新的主上,以保证服务的高可用。

如何实现读写分离?
在options里添加readPreference=secondaryPreferred即可实现,读请求优先到Secondary节点,从而实现读写分离的功能,更多读选项参考Read preferences

如何限制连接数?
在options里添加maxPoolSize=xx即可将客户端连接池限制在xx以内。

如何保证数据写入到大多数节点后才返回?
在options里添加w= majority即可保证写请求成功写入大多数节点才向客户端确认,


http://www.kler.cn/a/153527.html

相关文章:

  • 【数据中台】开源项目(2)-Davinci可视应用平台
  • C++11的异步操作(std::future,std::promise,std::packaged_task,std::async )
  • kendo-splitter动态分配分隔框大小
  • 力扣labuladong——一刷day62
  • 【CAD二次开发】标注箭头,获取修改标注箭头图块
  • C++11线程以及线程同步
  • (数据结构)顺序表的插入删除
  • Mysql中的引擎介绍(InnoDB,MyISAM,Memory)
  • C# 使用PanGu分词
  • 使用MD5当做文件的唯一标识,这样安全么?
  • Redis 基本命令—— 超详细操作演示!!!
  • 【算法刷题】Day9
  • 使用visual Studio MFC 平台实现对灰度图添加椒盐噪声,并进行均值滤波与中值滤波
  • 快速筛出EXCEL行中的重复项
  • [NOIP2002 普及组] 过河卒
  • 数据结构—二叉树
  • python+pytest接口自动化(2)-HTTP协议基础
  • Selenium+Python自动化测试之验证码处理
  • CentOS 7 配置tomcat
  • 兼容jlink OB arm仿真器使用(杜邦线过长导致烧写总是失败)