Я ищу лучший способ проверить подключение к Mongo DB. Ситуация: клиент делает запрос (api) на сервер. И сервер возвращает статус всех баз данных.MongoDB: проверьте соединение с DB
Какой лучший способ это сделать?
Я ищу лучший способ проверить подключение к Mongo DB. Ситуация: клиент делает запрос (api) на сервер. И сервер возвращает статус всех баз данных.MongoDB: проверьте соединение с DB
Какой лучший способ это сделать?
Использование MongoClient
для Java, всю информацию вам нужно здесь ...
http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/
Если я правильно понимаю ваш вопрос вы хотите получить состояние возвращается через вызов веб-службы. Вы можете написать функцию, которая вызывает db.serverStatus()
и вернуть ее. Проверьте документацию здесь:
Я использую это:
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;
}
В Java 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
}
}
Хорошо, я ищу место, где я мог бы объявить такого слушателя в новом java async-драйвере mongodb ... пока не найдено , MongoClientOptions, похоже, заменяется MongoClientSettings, у которого нет addServerMonitorListener() – Antonin
Команда пинг является не-оп используется для проверки, является ли сервер отвечает на команды. Эта команда немедленно вернется, даже если сервер заблокирован от записи:
try{
DBObject ping = new BasicDBObject("ping", "1");
mongoTemplate.getDb().getMongo().getDB("DATABASE NAME"").command(ping);
} catch (Exception exp){
// MongoDb is down..
}
Это работает для меня. Но странный мой объект БД не имеет метода serverStatus(). – Lugaru
@Lugaru 'db.serverStatus()' является командой оболочки, а не частью Java-драйвера MongoDB – Huber