Szukam najlepszego sposobu na sprawdzenie połączenia z Mongo DB. Sytuacja: klient wysyła żądanie (api) na serwer. Serwer zwraca stan wszystkich baz danych.MongoDB: sprawdź połączenie z DB
Jaki jest najlepszy sposób na zrobienie tego?
Szukam najlepszego sposobu na sprawdzenie połączenia z Mongo DB. Sytuacja: klient wysyła żądanie (api) na serwer. Serwer zwraca stan wszystkich baz danych.MongoDB: sprawdź połączenie z DB
Jaki jest najlepszy sposób na zrobienie tego?
Zastosowanie MongoClient
Java, wszystkie informacje potrzebne jest tutaj ...
http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/
Jeśli dobrze rozumiem pytanie chcesz uzyskać stan zwracany przez wywołanie usługi sieci Web. Możesz napisać funkcję, która wywołuje db.serverStatus()
i zwróci dane. Sprawdź dokumentację tutaj:
Używam tego:
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;
}
W Java MongoDriver 3.3.0 użytku ServerMonitorListener celu ustalenia, czy serwer jest podłączony i czy nie. Oto przykładowy kod,
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
}
}
Dobrze, szukam miejsca, w którym mógłbym zadeklarować takiego słuchacza w nowym sterowniku asynchronicznym ... . MongoClientOptions wydaje się być zastąpiony MongoClientSettings, który nie ma addServerMonitorListener() – Antonin
Polecenie ping jest no-op wykorzystywane do testowania, czy serwer odpowiada na polecenia. To polecenie natychmiast powróci, nawet jeśli serwer jest zablokowany:
try{
DBObject ping = new BasicDBObject("ping", "1");
mongoTemplate.getDb().getMongo().getDB("DATABASE NAME"").command(ping);
} catch (Exception exp){
// MongoDb is down..
}
To działa dla mnie. Ale dziwne, mój obiekt DB nie ma metody serverStatus(). – Lugaru
@Lugaru 'db.serverStatus()' jest poleceniem powłoki i nie jest częścią sterownika Java MongoDB. – Huber