MongoDB: проверьте подключение к БД

ищу лучший способ проверить подключение к БД Mongo. Ситуация: клиент отправляет запрос (api) на сервер. И сервер возвращает статус всех баз данных.

Какой лучший способ сделать это?

Ответы на вопрос(5)

Команда ping не используется, чтобы проверить, отвечает ли сервер на команды. Эта команда вернется немедленно, даже если сервер заблокирован от записи:

        try{

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

Если я правильно понимаю ваш вопрос, вы хотите вернуть состояние через вызов веб-службы. Вы можете написать функцию, которая вызываетdb.serverStatus() и пусть он вернет данные. Проверьте документацию здесь:

Мониторинг для MongoDB

Я использую это:

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;
}
 Horcrux704 февр. 2019 г., 12:01
Метод устарел в версии 3.9.

В 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
    }
}
 Antonin20 февр. 2017 г., 15:37
Хороший, ищу место, где я мог бы объявить такого слушателя в новом асинхронном драйвере java mongodb ... пока не найдено. MongoClientOptions, по-видимому, заменяется MongoClientSettings, который не имеет addServerMonitorListener ()
Решение Вопроса

использованиеMongoClient для Java вся необходимая информация находится здесь ...

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

 Huber12 сент. 2016 г., 10:07
@Lugarudb.serverStatus() является командой оболочки и не является частью драйвера MongoDB Java
 Lugaru19 июн. 2013 г., 17:06
Это работает для меня. Но странно, мой объект БД не имеет метода serverStatus ().

Ваш ответ на вопрос