JAVA连接MongoDB实践(1)

本文详细介绍了如何将数据迁移至 MongoDB 并使用 Java 进行连接实践,包括连接工具的选择、单例模式实现及大量数据插入时的优化策略。重点解决了连接超时、找不到对应 db 的问题,并提供了连接参数介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


由于业务需要,最近公司将一部分的数据转移的MongoDB数据库中。  

        在配合公司DBA 将 Mongodb数据库部署完毕以后,开始了我们的JAVA连接MongoDB的实践

        

开始前,推荐两个连接数据库的IDE工具

1.rockmongo-on-windows-v0.0.2  (只在火狐浏览器中运行成功)

2. Robomongo (在32机 XP 系统会启动不了)

    

 MongoManager 函数  (实现Mongo 的单例模式)

	public class MongoManager {
	private static final Logger LOGGER = Logger.getLogger(MongoManager.class);
	private static Mongo mongo = null;
	private MongoManager() {
	}
	public static DB getDB(String dbName) {
		try {
			if (mongo == null) {
				init();
			}
		} catch (Exception e) {
			LOGGER.error(e.getMessage(), e);
		}
		return mongo.getDB(dbName);
	}

	private static  void init() {
		try {
			MongoClient client = new MongoClient();
            mongo = MongoClient.connect(127.0.0.1, 27017)).getMongo();
            MongoOptions options = mongo.getMongoOptions();
			options.socketTimeout = 20000;
			options.maxWaitTime = 20000;
			options.connectTimeout = 20000;
		} catch (Exception e) {
			LOGGER.error(e.getMessage(), e);
		}
	}
	

  在使用的过程中 如果大量的数据插入;每次万条数据, 千万级的数据量  经常会报连接异常(连接超时,找不到对应的db )

检查发现 是由于连接不释放引起的  (

 db.serverStatus().connections; 

   解决的方式:

废弃使用 Mongo 函数   使用MongoClient  问题就解决了


   附上 连接时候的 参数介绍:

如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。

maxWaitTime:最大等待连接的线程阻塞时间

connectTimeout:连接超时的毫秒。0是默认和无限

socketTimeout:socket超时。0是默认和无限

autoConnectRetry:这个控制是否在一个连接时,系统会自动重试



 


   


  





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值