基于spring3和mongodb3的spring-data-mongodb框架集成

集成环境
JDK    1.7
Spring    3.2.0.RELEASE
spring-data-mongodb    1.4.2.RELEASE
mongo-java-driver    2.14.2(支持mongodb 3.0)  

阿里云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转成内网,导致访问不了。


配置外网可访问,要注意主备切换会导致代理配置需要相应改动,建议仅仅用于测试环境。

你可能感兴趣的:(基于spring3和mongodb3的spring-data-mongodb框架集成)