10

Mongo DB への接続を確認する最良の方法を探しています。状況: クライアントがサーバーにリクエスト (API) を送信します。サーバーはすべてのデータベースのステータスを返します。

それを行う最良の方法は何ですか?

4

5 に答える 5

8

私はこれを使用します:

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;
}
于 2015-11-17T13:25:12.340 に答える
7

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
    }
}
于 2016-09-02T14:34:22.763 に答える
6

ping コマンドは、サーバーがコマンドに応答しているかどうかをテストするために使用されるノーオペレーションです。サーバーが書き込みロックされている場合でも、このコマンドはすぐに戻ります。

        try{

            DBObject ping = new BasicDBObject("ping", "1");
            mongoTemplate.getDb().getMongo().getDB("DATABASE NAME"").command(ping);
        } catch (Exception exp){
            // MongoDb is down..
        }
于 2016-11-19T08:43:51.607 に答える