आवेदन में, एक एकल MongoClient
कनेक्शन पूलिंग . का उपयोग करके आवश्यक संख्या में कनेक्शन के साथ ऑब्जेक्ट करें , इस मामले में काम करेगा। 100
. के कनेक्शन पूल का डिफ़ॉल्ट मान , और आवश्यकतानुसार संशोधित (या कॉन्फ़िगर) किया जा सकता है।
मोंगो क्लाइंट ऑब्जेक्ट को एप्लिकेशन की शुरुआत में बनाया जा सकता है और केवल तभी बंद होता है जब एप्लिकेशन बंद हो। यह प्रत्येक संग्रह एक्सेस क्लास में मोंगो क्लाइंट ऑब्जेक्ट्स के साथ कनेक्शन बनाने से संबंधित संसाधनों को बचाता है।
पूरे एप्लिकेशन में एक ही मोंगो क्लाइंट ऑब्जेक्ट का उपयोग किया जा सकता है। एक सिंगलटन क्लास (जो मोंगो क्लाइंट ऑब्जेक्ट का एक उदाहरण रखता है) को एप्लिकेशन में किसी अन्य ऑब्जेक्ट द्वारा एक्सेस किया जा सकता है जिसे मोंगोडीबी डेटाबेस सर्वर से कनेक्शन की आवश्यकता होती है।
कनेक्शन पूलिंग क्या है?
उदाहरण कोड:
/*
* Manages the MongoClient object and its settings like host, port, connection pool, etc.
*/
public class DBAccess {
private static MongoClient mongoClient;
private static DBAccess dbAccess;
// MongoClient with default settings
// NOTE: the code will have only one of the constructors
//private DBAccess() {
// final String connectionString = "mongodb://localhost:27017";
// this.mongoClient = MongoClients.create(connectionString);
//}
// MongoClient with custom settings.
// Private constructor, so that the class can be instantiated outside this class.
// NOTE: the code will have only one of the constructors
private DBAccess() {
MongoClientSettings settings =
MongoClientSettings.builder()
.applyToConnectionPoolSettings(builder ->
builder.maxSize(40).minSize(10))
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017))))
.build();
mongoClient = MongoClients.create(settings);
}
public static MongoClient getConnection() {
if (dbAccess == null) {
dbAccess = new DBAccess();
}
return mongoClient;
}
public static void closeDatabase() {
mongoClient.close();
}
}
/*
* Class manages a collection.
*/
public class CollectionOneAccess {
public static String COLLECTION_ONE = "collection_one";
private MongoCollection<Document> collection;
public CollectionOneAccess(MongoDatabase db) {
collection = db.getCollection(COLLECTION_ONE);
}
public void printOneDocument() {
Document myDoc = collection.find().first();
System.out.println(myDoc.toJson());
}
// other CRUD operations ...
}
// Usage of DBAcess and CollectionOneAccess classes:
private static final String APP_DATABASE = "abc_db";
public static void main(String [] args) {
MongoDatabase database = DBAccess.getConnection().getDatabase(APP_DATABASE);
CollectionOneAccess one = new CollectionOneAccess(database);
one.printOneDocument();
// ...
}
मोंगो क्लाइंट
MongoClient
ऑब्जेक्ट का उपयोग MongoDB सर्वर से कनेक्ट करने के लिए किया जाता है, getDatebase()
का उपयोग करके डेटाबेस तक पहुंच प्राप्त करें विधि और संग्रह के साथ काम करें।
com.mongodb.client.MongoClient
इंटरफ़ेस:
MongoClient उदाहरण डेटाबेस से कनेक्शन के पूल का प्रतिनिधित्व करता है; आपको कई थ्रेड्स के साथ भी MongoClient वर्ग के केवल एक उदाहरण की आवश्यकता होगी।
निम्न कोड डिफ़ॉल्ट सेटिंग्स के साथ एक MongoDB क्लाइंट कनेक्शन ऑब्जेक्ट बनाता है, जैसे होस्ट ("लोकलहोस्ट") और पोर्ट (27017
), कनेक्शन पूलिंग, आदि, और एक MongoDB उदाहरण से जुड़ता है और testDB
तक पहुंच प्राप्त करता है डेटाबेस।
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("testDB");
मोंगो क्लाइंट सेटिंग:
आप MongoClientSettings
. के साथ अन्य सेटिंग्स को स्पष्ट रूप से निर्दिष्ट कर सकते हैं MongoClient
. के व्यवहार को नियंत्रित करने के लिए ।
MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)
ConnectionPoolSettings
ऑब्जेक्ट उन सभी सेटिंग्स को निर्दिष्ट करता है जो मोंगोडीबी सर्वर से कनेक्शन के पूल से संबंधित हैं। क्लाइंट ऑब्जेक्ट बनने पर एप्लिकेशन इस कनेक्शन पूल को बनाता है। ConnectionPoolSettings.Builder
ConnectionPoolSettings
. के लिए एक निर्माता है , में कनेक्शन पूल गुण निर्दिष्ट करने के तरीके हैं। उदा., maxSize(int maxSize)
:अनुमत कनेक्शनों की अधिकतम संख्या (डिफ़ॉल्ट 100
. है ) अन्य विधियों में शामिल हैं, minSize
, maxConnectionIdleTime
, आदि.
एक MongoClient
को तत्काल करने के लिए कोड कनेक्शन पूल सेटिंग के साथ:
MongoClientSettings settings = MongoClientSettings.builder()
.applyToConnectionPoolSettings(builder ->
builder.maxSize(20))
.build();
MongoClient mongoClient = MongoClients.create(settings);
// ...
// Verify the connection pool settings
System.out.println("Pool size: " +
settings.getConnectionPoolSettings().getMaxSize());