5

私は現在、アクチュエーターを介してヘルスチェックにアクセスできる Spring Boot アプリを持っています。

このアプリは、別の Spring Boot アプリが利用可能/稼働中であることに依存しているため、私の質問は次のとおりです。

最初のアプリでヘルス チェックをオーバーライドすることにより、2 番目のアプリでヘルス チェックを行うエレガントな方法はありますか?

本質的には、1 つの呼び出しを使用して、両方のアプリケーションのヘルスチェック情報を取得したいだけです。

ありがとう

4

2 に答える 2

14

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();
    }
}
于 2016-06-06T13:16:39.653 に答える
0

アプリ A にコントローラーがある場合は、コントローラーに GET メソッド リクエストを導入し、それをアプリ B のヘルス チェック API エンドポイントに向けることができます。このようにして、アプリ A で API エンドポイントを使用して、アプリ B の正常性も確認できます。

于 2016-06-06T10:09:24.620 に答える