JAVA串連MongoDB實踐(1)__JAVA

來源:互聯網
上載者:User


由於業務需要,最近公司將一部分的資料轉移的MongoDB資料庫中。  

        在配合公司DBA 將 Mongodb資料庫部署完畢以後,開始了我們的JAVA串連MongoDB的實踐

        

開始前,推薦兩個串連資料庫的IDE工具

1.rockmongo-on-windows-v0.0.2  (只在Firefox瀏覽器中運行成功)

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:這個控制是否在一個串連時,系統會自動重試



 


   


  





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.