2013-06-19 4 views
5

से कनेक्शन की जांच करें मैं मोंगो डीबी से कनेक्शन की जांच करने का सबसे अच्छा तरीका ढूंढ रहा हूं। स्थिति: क्लाइंट सर्वर से अनुरोध (एपीआई) बनाता है। और सर्वर सभी डेटाबेस की स्थिति देता है।MongoDB: डीबी

ऐसा करने का सबसे अच्छा तरीका क्या है?

उत्तर

1

जावा के लिए उपयोग MongoClient, सभी आवश्यक जानकारी को यहाँ है ...

http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/

+1

यह मेरे लिए काम करता है। लेकिन अजीब मेरे डीबी ऑब्जेक्ट में सर्वरस्टैटस() विधि नहीं है। – Lugaru

+0

@Lugaru 'db.serverStatus()' एक शेल कमांड है और मोंगोडीबी जावा चालक का हिस्सा नहीं है – Huber

2

अगर मैं आपके सवाल का सही ढंग से समझ आप राज्य एक वेब सेवा कॉल के माध्यम से लौटे प्राप्त करना चाहते हैं। आप एक ऐसा फ़ंक्शन लिख सकते हैं जो db.serverStatus() को आमंत्रित करता है और इसे डेटा वापस कर देता है। यहाँ प्रलेखन की जाँच करें:

Monitoring for MongoDB

5

मैं इस का उपयोग करें:

Builder o = MongoClientOptions.builder().connectTimeout(3000); 
MongoClient mongo = new MongoClient(new ServerAddress("192.168.0.1", 3001), o.build());  

try { 
    mongo.getAddress(); 
} catch (Exception e) { 
    System.out.println("Mongo is down"); 
    mongo.close(); 
    return; 
} 
5

जावा MongoDriver 3.3.0 उपयोग ServerMonitorListener में निर्धारित करने के लिए सर्वर और जुड़ा हुआ है या नहीं। यहाँ उदाहरण कोड

public class ServerConnection implements ServerMonitorListener { 
    private MongoClient client; 

    public ServerConnection(){ 
     try { 
      MongoClientOptions clientOptions = new MongoClientOptions.Builder() 
       .addServerMonitorListener(this) 
       .build(); 

      client = new MongoClient(new ServerAddress("localhost", 27017), clientOptions); 
     } catch (Exception ex) { 

     } 
    } 

    @Override 
    public void serverHearbeatStarted(ServerHeartbeatStartedEvent serverHeartbeatStartedEvent) { 
     // Ping Started 
    } 

    @Override 
    public void serverHeartbeatSucceeded(ServerHeartbeatSucceededEvent serverHeartbeatSucceededEvent) { 
     // Ping Succeed, Connected to server 
    } 

    @Override 
    public void serverHeartbeatFailed(ServerHeartbeatFailedEvent serverHeartbeatFailedEvent) { 
     // Ping failed, server down or connection lost 
    } 
} 
+0

अच्छा, उस स्थान की तलाश में जहां मैं नए मोंगोडब जावा एसिंक ड्राइवर में ऐसे श्रोता घोषित कर सकता हूं ... अभी तक नहीं मिला । MongoClientOptions को मोंगो क्लाइंट सेटिंग्स द्वारा प्रतिस्थापित किया जाता है जिसमें addServerMonitorListener() नहीं है – Antonin

2

पिंग कमांड नो-सेशन एक सर्वर आदेशों का जवाब है कि क्या परीक्षण करने के लिए प्रयोग किया जाता है है। सर्वर कमांड-लॉक होने पर भी यह आदेश तुरंत वापस आ जाएगा:

 try{ 

      DBObject ping = new BasicDBObject("ping", "1"); 
      mongoTemplate.getDb().getMongo().getDB("DATABASE NAME"").command(ping); 
     } catch (Exception exp){ 
      // MongoDb is down.. 
     }