MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Problem z otwartym połączeniem mongodb

MongoClient posiada wewnętrzną pulę połączeń. Można skonfigurować maksymalną liczbę połączeń (domyślnie 100). Możesz to ustawić za pomocą MongoClientOptions tak:

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

A następnie przekaż te opcje MongoClient (zaznaczone w Mongo Java API v2.11.1). Połączenia w puli są utrzymywane jako otwarte (otwieranie i zamykanie połączenia jest zwykle kosztowną operacją), aby można je było później ponownie wykorzystać.

Chciałbym również dokonać refaktoryzacji pojedynczego klienta MongoDB za pomocą enum na przykład, aby uniknąć umieszczania synchronized na tej metodzie.

Oto szkic tego, co mam na myśli:

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();
    }
}

Następnie możesz uzyskać dostęp do bazy danych przez

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Użycie $unwind i $text w ramach agregacji mongodb

  2. Mongoose — ten sam schemat dla różnych kolekcji w (MongoDB)

  3. Asp.net core web api z błędem mongodb 500

  4. znajdź według _id z Mongoose

  5. MongoDB :kolejność indeksów i kolejność zapytań muszą być zgodne?