MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

проблем с отворена връзка на mongodb

MongoClient има вътрешен пул за връзки. Могат да бъдат конфигурирани максимален брой връзки (по подразбиране е 100). Можете да го зададете, като използвате MongoClientOptions като това:

MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .build();

И след това дайте тези опции на MongoClient (проверено в Mongo Java API v2.11.1). Връзките в пула се поддържат отворени (отварянето и затварянето на връзка обикновено е скъпа операция), така че да могат да бъдат използвани по-късно.

Бих също така преработил вашия MongoDB клиент singleton, използвайки enum например, за да избегнете поставянето на synchronized по този метод.

Ето скица на това, което имам предвид:

public enum MongoDB {
    INSTANCE;

    private static final String MONGO_DB_HOST = "some.mongohost.com";
    private Mongo mongo;
    private DB someDB;

    MongoDB() {

        MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .readPreference(ReadPreference.secondaryPreferred())
                .build();

        try {
            mongo = new MongoClient(MONGO_DB_HOST, options);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

        someDB = mongo.getDB("someDB");
         //authenticate if needed
         //boolean auth = someDB.authenticate("username", "password".toCharArray());
         //if(!auth){
         //     System.out.println("Error Connecting To DB");
         //}        
    }

    public DB getSomeDB() {
        return someDB;
    }

    //call it on your shutdown hook for example 
    public void close(){
        mongo.close();
    }
}

След това можете да получите достъп до вашата база данни чрез

MongoDB.INSTANCE.getSomeDB().getCollection("someCollection").count();



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да актуализирате вграден документ в MongoDB с Doctrine ODM

  2. Не може да се свърже с Mongo DB чрез Spark

  3. Запитване за вложени вградени документи с Mongoose

  4. Грешка:Route.post() изисква функции за обратно извикване, но получи [object Undefined]

  5. Как да конфигурирам mongo да работи в докер за използване на външно устройство на Windows