Mongo DB への接続を確認する最良の方法を探しています。状況: クライアントがサーバーにリクエスト (API) を送信します。サーバーはすべてのデータベースのステータスを返します。
それを行う最良の方法は何ですか?
私はこれを使用します:
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
}
}
ping コマンドは、サーバーがコマンドに応答しているかどうかをテストするために使用されるノーオペレーションです。サーバーが書き込みロックされている場合でも、このコマンドはすぐに戻ります。
try{
DBObject ping = new BasicDBObject("ping", "1");
mongoTemplate.getDb().getMongo().getDB("DATABASE NAME"").command(ping);
} catch (Exception exp){
// MongoDb is down..
}