背景
我负责的一个项目采用了MongoDB作为数据源,同时使用了springboot生态顺利成章的使用了org.springframework.boot:spring-boot-starter-data-mongodb。开始配置采用下面的链接方式
1 | spring.data.mongodb.uri=mongodb://127.0.0.1:27017/faceguard?retryWrites=true |
这种方案我们遇到了俩个问题:
- 很难对连接池进行定制化的设计,连连接数都设置不了。
- 更为重要的我们对mongodb的server加了4层的负载,而这种链接方式不自持心跳导致我们的链接空闲一段时间内会自己断掉;
解决方案
自己注入MongoDbFactory,可以按需要注入进自己的参数了。我们需要实现下面几步
- 实现MongoClientOptionProperties,将配置文件中mongo.client.option签注的属性注入到MongoClientOptionProperties中
- 利用MongoClientOptionProperties生成MongoClientOptions对象,MongoClientOptions是典型的builder模式,通过build()生成对象在传递给MongoClient
- 注入MongoDbFactory方法时候将MongoClient传递给MongoDbFactory
talk is cheap上代码,MongoClientOptionProperties只提供了几个常用设置
1 | import lombok.Data; |
1 | package com.ericliu.mongodb.plus.config; |