MongoClient memiliki kumpulan koneksi internal. Jumlah maksimum koneksi yang dapat dikonfigurasi (default adalah 100). Anda dapat mengaturnya dengan menggunakan MongoClientOptions
seperti ini:
MongoClientOptions options = MongoClientOptions.builder()
.connectionsPerHost(100)
.autoConnectRetry(true)
.build();
Dan kemudian berikan opsi ini ke MongoClient (memeriksanya di Mongo Java API v2.11.1). Sambungan di kumpulan dipertahankan terbuka (membuka dan menutup koneksi biasanya merupakan operasi yang mahal) sehingga nantinya dapat digunakan kembali.
Saya juga akan memfaktorkan ulang klien tunggal MongoDB Anda menggunakan enum
misalnya untuk menghindari menempatkan synchronized
pada metode ini.
Berikut adalah sketsa yang saya maksud:
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();
}
}
Kemudian, Anda dapat mengakses database Anda melalui
MongoDB.INSTANCE.getSomeDB().getCollection("someCollection").count();