View Javadoc
1   package de.dlr.shepard.common.healthz;
2   
3   import com.mongodb.MongoException;
4   import com.mongodb.client.MongoDatabase;
5   import jakarta.enterprise.context.ApplicationScoped;
6   import jakarta.inject.Inject;
7   import jakarta.inject.Named;
8   import org.bson.Document;
9   import org.eclipse.microprofile.health.HealthCheck;
10  import org.eclipse.microprofile.health.HealthCheckResponse;
11  import org.eclipse.microprofile.health.Readiness;
12  
13  @Readiness
14  @ApplicationScoped
15  public class MongoHealthCheck implements HealthCheck {
16  
17    @Inject
18    @Named("mongoDatabase")
19    MongoDatabase mongoDatabase;
20  
21    private boolean getMongoDBHealth() {
22      Document result;
23      try {
24        result = mongoDatabase.runCommand(new Document("ping", "1"));
25      } catch (MongoException ex) {
26        return false;
27      }
28      return result.containsKey("ok");
29    }
30  
31    @Override
32    public HealthCheckResponse call() {
33      return HealthCheckResponse.named("MongoDB connection health check").status(getMongoDBHealth()).build();
34    }
35  }