日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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?
  • package?com.mongo.common;??
  • ??
  • import?java.net.UnknownHostException;??
  • ??
  • import?com.mongodb.DB;??
  • import?com.mongodb.Mongo;??
  • import?com.mongodb.MongoException;??
  • import?com.mongodb.MongoOptions;??
  • ??
  • public?class?MongoManager?{??
  • ????private?final?static?String?HOST?=?"localhost";//?端口??
  • ????private?final?static?int?PORT?=?27017;//?端口??
  • ????private?final?static?int?POOLSIZE?=?100;//?連接數量??
  • ????private?final?static?int?BLOCKSIZE?=?100;?//?等待隊列長度??
  • ????private?static?Mongo?mongo?=?null;??
  • ??
  • ????private?MongoManager()?{?}??
  • ??
  • ????static?{??
  • ????????initDBPrompties();??
  • ????}??
  • ??
  • ????public?static?DB?getDB(String?dbName)?{??
  • ????????return?mongo.getDB(dbName);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?初始化連接池?
  • ?????*/??
  • ????private?static?void?initDBPrompties()?{??
  • ????????//?其他參數根據實際情況進行添加??
  • ????????try?{?
  • ????????????mongo = new MongoClient( HOST, PORT);
  • ????????????MongoOptions?opt?=?mongo.getMongoOptions();??
  • ????????????opt.connectionsPerHost?=?POOLSIZE;??
  • ????????????opt.threadsAllowedToBlockForConnectionMultiplier?=?BLOCKSIZE;??
  • ????????}?catch?(UnknownHostException?e)?{??
  • ????????}?catch?(MongoException?e)?{??
  • ??
  • ????????}??
  • ??
  • ????}??
  • }??

  • 使用的時候,如下所示:

    [java]?view plain?copy ?print?
  • /**?
  • ?????*?保存?
  • ?????*??
  • ?????*?@param?user?
  • ?????*?@throws?UnknownHostException?
  • ?????*/??
  • ????public?void?save(User?user)?throws?UnknownHostException?{??
  • ????????DB?myMongo?=?MongoManager.getDB("myMongo");??
  • ????????DBCollection?userCollection?=?myMongo.getCollection("user");??
  • ??
  • ????????DBObject?dbo?=?(DBObject)?JSON.parse(user.toJson());??
  • ????????userCollection.insert(dbo);??
  • ????}??

  • ?

    轉載于:https://www.cnblogs.com/gaopeng527/p/5349445.html

    總結

    以上是生活随笔為你收集整理的java操作mongodb(连接池)(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。