如何在春季靴子中创建自定义mongo健康检查?

时间:2017-02-08 15:00:37

标签: mongodb spring-boot-actuator

如何在弹簧启动执行器中禁用默认mongo运行状况检查并创建自定义mongo运行状况检查URL,如../ manage / mongo?

1 个答案:

答案 0 :(得分:1)

<强> application.properties

  

management.health.mongo.enabled =假
  endpoints.mongo.enabled =真

<强> MongoDBHealthCheckEndPoint.java

@ConfigurationProperties(prefix = "endpoints.mongo", ignoreUnknownFields = true)
@Component
public class MongoDBHealthCheckEndPoint extends AbstractEndpoint<Map<String, String>> 
{

    @Inject
    MongoTemplate mongoTemplate;


    private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

    private static final Map<String, String> UP = new HashMap<String, String>() {{
        put("mongo.status", "UP");
    }};

    private static final Map<String, String> DOWN = new HashMap<String, String>() {{
        put("mongo.status", "DOWN");
    }};


    public MongoDBHealthCheckEndPoint() {
        super("mongo", false);
    }

    public MongoDBHealthCheckEndPoint(Map<String, ? extends Object> mongo) {
        super("mongo", false);
    }

    public Map<String, String> invoke() {
        try {
            return (new MongoHealthIndicator(mongoTemplate).health().getStatus().equals(Status.UP)) ? UP : DOWN;
        } catch (Exception e) {
            log.error("mongo database is down", e);
            return DOWN;
        }
    }
}