配置Maven依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            &lt;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 指定额外连接选项

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

! : %21
@ : %40
# : %23
$ : %24
% : %25
^ : %5e
&amp; : %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&amp;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即可保证写请求成功写入大多数节点才向客户端确认

原文地址:https://blog.csdn.net/qq_16038125/article/details/134468491

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49380.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注