3 votes

Comment obtenir une erreur si MongoDB est inaccessible ?

Mon application interagit avec deux bases de données : une sur MongoDB et l'autre sur Neo4J.

Le problème est que si les bases de données sont désactivées ou inaccessibles, l'application se bloque. Je résous le problème avec Neo4J grâce à la méthode verifyConnectivity du driver Neo4J et avec une instruction try-catch, mais avec MongoDB le problème demeure. En fait, il semble que l'application attende MongoDB mais que MongoDB est désactivé et donc l'application attend pendant un temps infini sans envoyer d'exception.

Je cherche un moyen de comprendre que MongoDB est inaccessible afin de le notifier à l'utilisateur, peut-être un délai d'attente ou quelque chose de ce genre est-il nécessaire ? Dans ce cas, comment puis-je le définir ?

Le langage de programmation que j'utilise est Java et la version du pilote MongoDB est la suivante :

    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.1.1</version>

EDIT :

try
{
    mongoClient = MongoClients.create(connectionString);
    database = mongoClient.getDatabase(dbName);
    DBObject ping = new BasicDBObject("ping","1");
    database.runCommand((Bson) ping);
}
catch (Exception ex)
{
    System.err.println("MongoDB is not available");
    return false;
}
return true;

1voto

Yahya Points 727

Vous pouvez le tester avec ping (voir aquí ), ce qui est une erreur.

try
{
  DBObject ping = new BasicDBObject("ping", "1");
  mongoClient.getDb().getMongo().getDB("<YOUR_DB").command(ping);
} catch (Exception exp){
  //Cannot connect to MongoDB or your DB
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X