sql >> Database >  >> NoSQL >> MongoDB

mongodb probleem met open verbinding

MongoClient heeft een interne verbindingspool. Maximaal aantal verbindingen kan worden geconfigureerd (standaard is 100). Je kunt het instellen met MongoClientOptions zoals dit:

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

En geef deze opties vervolgens aan MongoClient (aangevinkt in Mongo Java API v2.11.1). Verbindingen in pool blijven open (verbinding openen en sluiten is meestal een dure operatie) zodat ze later opnieuw kunnen worden gebruikt.

Ik zou ook uw MongoDB-client-singleton refactoren met behulp van enum bijvoorbeeld om te voorkomen dat synchronized op deze methode.

Hier is een schets van wat ik bedoel:

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

Vervolgens heeft u toegang tot uw database via

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



  1. PostgreSQL versus MongoDB

  2. MongoDB Journaling:wordt het journaalbestand gebruikt wanneer de klant een niet-journaal schrijven aanvraagt ​​en journaling is geactiveerd op Mongod

  3. MongoDB bulkWrite()

  4. ZRANGESTORE eerdere Redis 6.2.0