阿里云mongodb库(3.2)(官方要求:请使用MongoDB 3.0以上版本的driver)
org.springframework
spring-core
3.2.0.RELEASE
省略。。。其它spring配置
org.springframework.data
spring-data-mongodb
1.4.2.RELEASE
org.mongodb
mongo-java-driver
org.mongodb
mongo-java-driver
2.14.2
追加:
1、上线时可能出现这样的异常
Caused by: com.mongodb.MongoWaitQueueFullException: Too many threads are already waiting for a connection. Max number of threads (maxWaitQueueSize) of50 has been exceeded.
...
原因是spring-data-mongo 版本比较旧,默认传给driver的最大连接池数,只有10,乘上因子(默认5),最大只能支持10*5=50个线程并发请求。方法也很简单,自定义maxPoolSize参数即可,比如定义为200,这样单个java进程可以支持200*5=1000个线程并发请求mongodb
mongodb://{userName}:{password}@{host1:port1},{host2:port2}/{dbname}?replicaSet={replicaSetName}&maxPoolSize=200
2、假如按照阿里云文档(iptable或者rinetd)配置外网访问
mongo uri改成mongodb://{userName}:{password}@{host1:port1}/{dbname}?maxPoolSize=200,去掉replicaSet参数,可以避免客户端将服务端ip转成内网,导致访问不了。
配置外网可访问,要注意主备切换会导致代理配置需要相应改动,建议仅仅用于测试环境。