java操作mongodb(连接池)(转)

原文链接: java操作mongodb(连接池)

Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接。我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置。因为Mongo的实例就是一个连接池,所以,项目中最好只存在一个Mongo的实例。

常见的配置参数:

connectionsPerHost:每个主机的连接数

threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值。如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。

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

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

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

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

还有许多配置,可以参见mongodb的API。

下面看代码:

[java] view plain copy

print?

  1. package com.mongo.common;
  2. import java.net.UnknownHostException;
  3. import com.mongodb.DB;
  4. import com.mongodb.Mongo;
  5. import com.mongodb.MongoException;
  6. import com.mongodb.MongoOptions;
  7. public class MongoManager {
  8. private final static String HOST = "localhost";// 端口
  9. private final static int PORT = 27017;// 端口
  10. private final static int POOLSIZE = 100;// 连接数量
  11. private final static int BLOCKSIZE = 100; // 等待队列长度
  12. private static Mongo mongo = null;
  13. private MongoManager() { }
  14. static {
  15. initDBPrompties();
  16. }
  17. public static DB getDB(String dbName) {
  18. return mongo.getDB(dbName);
  19. }
  20. /**
  21. * 初始化连接池
  22. */
  23. private static void initDBPrompties() {
  24. // 其他参数根据实际情况进行添加
  25. try {
  26. mongo = new MongoClient( HOST, PORT);
  27. MongoOptions opt = mongo.getMongoOptions();
  28. opt.connectionsPerHost = POOLSIZE;
  29. opt.threadsAllowedToBlockForConnectionMultiplier = BLOCKSIZE;
  30. } catch (UnknownHostException e) {
  31. } catch (MongoException e) {
  32. }
  33. }
  34. }

使用的时候,如下所示:

[java] view plain copy

print?

  1. /**
  2. * 保存
  3. *
  4. * @param user
  5. * @throws UnknownHostException
  6. */
  7. public void save(User user) throws UnknownHostException {
  8. DB myMongo = MongoManager.getDB("myMongo");
  9. DBCollection userCollection = myMongo.getCollection("user");
  10. DBObject dbo = (DBObject) JSON.parse(user.toJson());
  11. userCollection.insert(dbo);
  12. }
时间: 2024-10-03 13:10:02

java操作mongodb(连接池)(转)的相关文章

8月23 配置mongodb连接池 | docker 操作

一.配置mongodb连接池 属性类 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; import lombok.Getter; import lombok.Setter;

java操作mongoDB实现CURD

java操作mongoDB mongoDB作为一个牛气哄哄的nosql内存数据库,的确有很多优点,对于大数据量.高并发.弱事务的互联网应用,MongoDB可以应对自如.接触到mongoDB 参考了下api实现了增删改查.mongoDB 是面向对象设计,不用写sql语句 直接操作api 方法 就可以实现,这会儿数据库语句写不好的娃娃们有福了.直接贴码: DataTest.java package com.zk.db; import java.net.UnknownHostException; im

Java操作MongoDB

先引入mongo-java-dirver驱动 <!-- mongo-java-dirver --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.2</version> </dependency> 代码操作演示: package com.simpl

【MongoDB for Java】Java操作MongoDB

开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3.jar.junit-4.8.2.jar 一.准备工作 1. 首先,下载mongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads mongoDB对Java的相关支持.技术:http://www.mongodb.org/

[转载]使用Java操作Mongodb

HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mongodb,必须先下载Mongodb的Java驱动程序,可以在这里下载. 新建立一个Java工程,将下载的驱动程序放在库文件路径下,程序代码如下: 1 package com.mkyong.core; 2 import java.net.UnknownHostException; 3 import com.mongo

MongDB基础学习(七)—— 【MongoDB for Java】Java操作MongoDB

[MongoDB for Java]Java操作MongoDB 开发的产品为了融资,不停得改版,从第一版到现在最新版本,最后发现公司发展方向都变了,有最初电子商务改成VR内容提供者(没办法,要别人钱,就得按照别人的规划的战略走).本来本章节会放到后面再做讲解,无奈,部门需要做一次培训任务,我就想到拿Java操作MongoDB作为培训内容,开发环境和依赖jar如下: (1)开发环境: System:Windows IDE:eclipse Database:mongoDB2.6 Maven:apac

使用Java操作MongoDB

该篇比较简单,仅介绍Java操作MongoDB的简单CRUD案例,开搞前需要引入mongo-java-driver-3.2.2.jar,Java操作MongoDB的API众多,高级功能还需查询官方文档. public void insert() { // 建立数据库连接 Mongo mongo = new Mongo("localhost", 27017); // 获取指定的数据库 DB db = mongo.getDB("kaiye"); // 获取指定的集合 D

mongodb or操作与连接池

mongodb # 类似于sql中的in或者or操作 mulites field query: db.cool.find({$or:[{field1:'val'},{'field2':'val'}-]}) # 类似于sql中的like操作 db.coo.find('name': /m/) == sql like pymongo 使用 {'field':{$regex: keyword}} http://stackoverflow.com/questions/3305561/how-do-i-qu

java中使用jedis操作redis(连接池方式)

1 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.List; 6 import java.util.Map; 7 8 import org.junit.Before; 9 import org.junit.Test; 10 11 import redis.clients.jedis.Jedis; 12 13 public class TestRedis