2013-06-19 16 views
5

Sto cercando il modo migliore per verificare la connessione a Mongo DB. Situazione: il client effettua la richiesta (api) al server. E il server restituisce lo stato di tutti i database.MongoDB: verifica connessione a DB

Qual è il modo migliore per farlo?

risposta

2

Se ho capito la tua domanda correttamente si desidera ottenere lo stato restituito tramite una chiamata di servizio web. È possibile scrivere una funzione che invoca db.serverStatus() e restituire i dati. Controlla la documentazione qui:

Monitoring for MongoDB

5

Io uso questo:

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

In Java 3.3.0 MongoDriver uso ServerMonitorListener per determinare se il server è attivo e connesso o meno. Qui è il codice esempio,

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

Buono, cercando il posto in cui potrei dichiarare questo listener nel nuovo driver async java mongodb ... non ancora trovato . MongoClientOptions sembra essere sostituito da MongoClientSettings che non ha addServerMonitorListener() – Antonin

2

Il comando ping è un no-op utilizzato per verificare se un server risponde ai comandi. Questo comando verrà restituito immediatamente anche se il server è bloccato in scrittura:

 try{ 

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