私は現在、アクチュエーターを介してヘルスチェックにアクセスできる Spring Boot アプリを持っています。
このアプリは、別の Spring Boot アプリが利用可能/稼働中であることに依存しているため、私の質問は次のとおりです。
最初のアプリでヘルス チェックをオーバーライドすることにより、2 番目のアプリでヘルス チェックを行うエレガントな方法はありますか?
本質的には、1 つの呼び出しを使用して、両方のアプリケーションのヘルスチェック情報を取得したいだけです。
ありがとう
私は現在、アクチュエーターを介してヘルスチェックにアクセスできる Spring Boot アプリを持っています。
このアプリは、別の Spring Boot アプリが利用可能/稼働中であることに依存しているため、私の質問は次のとおりです。
最初のアプリでヘルス チェックをオーバーライドすることにより、2 番目のアプリでヘルス チェックを行うエレガントな方法はありますか?
本質的には、1 つの呼び出しを使用して、両方のアプリケーションのヘルスチェック情報を取得したいだけです。
ありがとう
HealthIndicator
バックエンド アプリの正常性をチェックする実装を行うことで、独自の正常性インジケーターを開発できます。したがって、本質的にはそれほど難しくありません。ボックスから取り出した RestTemplate を使用するだけでよいためです。
public class DownstreamHealthIndicator implements HealthIndicator {
private RestTemplate restTemplate;
private String downStreamUrl;
@Autowired
public DownstreamHealthIndicator(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")) {
return Health.up().build();
}
} catch (Exception ex) {
return Health.down(ex).build();
}
return Health.down().build();
}
}
アプリ A にコントローラーがある場合は、コントローラーに GET メソッド リクエストを導入し、それをアプリ B のヘルス チェック API エンドポイントに向けることができます。このようにして、アプリ A で API エンドポイントを使用して、アプリ B の正常性も確認できます。