#spring-boot-actuator #indicator #contributor #compositehealthcontributor
Вопрос:
Интересно, как я могу вызвать пользовательский индикатор работоспособности:
- в том же приложении
- из другого приложения Spring Boot
Мое приложение разделено на базовое приложение (скорее, конфигурацию). A, который реализует почти всю функциональность (не имея основного метода), и другое приложение B (имеющее основной метод; -)), имеющее базовую конфигурацию в качестве зависимости в POM.
В A я внедрил пользовательский индикатор состояния здоровья:
@Component
@RequiredArgsConstructor
public class AdapterDownstreamHealthIndicator implements HealthIndicator {
private RestTemplate restTemplate;
private String downStreamUrl = "http://localhost:8081/actuator";
public AdapterDownstreamHealthIndicator(RestTemplate restTemplate, String downStreamUrl) {
this.restTemplate = restTemplate;
this.downStreamUrl = downStreamUrl;
}
@Override
public Health health() {
// try {
// JsonNode resp = restTemplate.getForObject(downStreamUrl "/health", JsonNode.class);
// if (resp.get("status").asText().equalsIgnoreCase("UP")) {
// System.out.println("JUHUUUUUUUUUUU!!!!");
// return Health.up().build();
// }
// } catch (Exception ex) {
// return Health.down(ex).build();
// }
return Health.down().build();
}
}
В моем application.properties
у меня есть некоторые свойства привода:
management.endpoints.web.exposure.include=health,info,prometheus,adapterDownstream
spring.jackson.serialization.INDENT_OUTPUT=true
management.endpoint.health.show-details=always
Когда я войду http://localhost:9091/actuator/health/adapterDownstream в браузере отладчик не останавливается в методе health (), и я просто отображаю пустую страницу.
Я уже пытался расширить AbstractHealthIndicator
вместо реализации HealthIndicator
интерфейса.
Что я делаю неправильно, если пользовательский индикатор работоспособности не распознается?
В конце концов, я хочу провести какую-то глубокую проверку работоспособности, чтобы протестировать все компоненты, используемые в моем приложении. Может CompositeHealthContributor
быть, следует использовать использование???
Ответ №1:
Как я уже описывал, у меня есть зависимость A, у которой нет основного метода, который загружается в мое приложение B в качестве зависимости в POM. До сих пор я пытался реализовать пользовательский класс проверки работоспособности/индикатор работоспособности в этой зависимости/модуле A.
Простое решение состоит в том, чтобы добавить a @ComponentScan(basePackages = "path.to.actuator")
в основной метод приложения.