Allow custom availability states
Create a general purpose `AvailabilityState` interface and refactor the existing `LivenessState` and `ReadinessState` to use it. A single `AvailabilityChangeEvent` is now used to carry all availability state updates. This commit also renames `ApplicationAvailabilityProvider` to `ApplicationAvailabilityBean` and extracts an `ApplicationAvailability` interface that other beans can inject. The helps to hide the event listener method, which is really internal. Finally the state enums have been renamed as follows: - `LivenessState.LIVE` -> `LivenessState.CORRECT` - `ReadinessState.READY` -> `ReadinessState.ACCEPTING_TRAFFIC` - `ReadinessState.UNREADY` -> `ReadinessState.REFUSING_TRAFFIC` See gh-20962
This commit is contained in:
@@ -19,7 +19,8 @@ package org.springframework.boot.actuate.availability;
|
||||
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.Health;
|
||||
import org.springframework.boot.actuate.health.HealthIndicator;
|
||||
import org.springframework.boot.availability.ApplicationAvailabilityProvider;
|
||||
import org.springframework.boot.actuate.health.Status;
|
||||
import org.springframework.boot.availability.ApplicationAvailability;
|
||||
import org.springframework.boot.availability.LivenessState;
|
||||
|
||||
/**
|
||||
@@ -30,20 +31,16 @@ import org.springframework.boot.availability.LivenessState;
|
||||
*/
|
||||
public class LivenessProbeHealthIndicator extends AbstractHealthIndicator {
|
||||
|
||||
private final ApplicationAvailabilityProvider applicationAvailabilityProvider;
|
||||
private final ApplicationAvailability applicationAvailability;
|
||||
|
||||
public LivenessProbeHealthIndicator(ApplicationAvailabilityProvider applicationAvailabilityProvider) {
|
||||
this.applicationAvailabilityProvider = applicationAvailabilityProvider;
|
||||
public LivenessProbeHealthIndicator(ApplicationAvailability applicationAvailability) {
|
||||
this.applicationAvailability = applicationAvailability;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doHealthCheck(Health.Builder builder) throws Exception {
|
||||
if (LivenessState.LIVE.equals(this.applicationAvailabilityProvider.getLivenessState())) {
|
||||
builder.up();
|
||||
}
|
||||
else {
|
||||
builder.down();
|
||||
}
|
||||
LivenessState state = this.applicationAvailability.getLivenessState();
|
||||
builder.status(LivenessState.CORRECT == state ? Status.UP : Status.DOWN);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,8 @@ package org.springframework.boot.actuate.availability;
|
||||
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.Health;
|
||||
import org.springframework.boot.actuate.health.HealthIndicator;
|
||||
import org.springframework.boot.availability.ApplicationAvailabilityProvider;
|
||||
import org.springframework.boot.actuate.health.Status;
|
||||
import org.springframework.boot.availability.ApplicationAvailability;
|
||||
import org.springframework.boot.availability.ReadinessState;
|
||||
|
||||
/**
|
||||
@@ -30,20 +31,16 @@ import org.springframework.boot.availability.ReadinessState;
|
||||
*/
|
||||
public class ReadinessProbeHealthIndicator extends AbstractHealthIndicator {
|
||||
|
||||
private final ApplicationAvailabilityProvider applicationAvailabilityProvider;
|
||||
private final ApplicationAvailability applicationAvailability;
|
||||
|
||||
public ReadinessProbeHealthIndicator(ApplicationAvailabilityProvider applicationAvailabilityProvider) {
|
||||
this.applicationAvailabilityProvider = applicationAvailabilityProvider;
|
||||
public ReadinessProbeHealthIndicator(ApplicationAvailability applicationAvailability) {
|
||||
this.applicationAvailability = applicationAvailability;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doHealthCheck(Health.Builder builder) throws Exception {
|
||||
if (ReadinessState.READY.equals(this.applicationAvailabilityProvider.getReadinessState())) {
|
||||
builder.up();
|
||||
}
|
||||
else {
|
||||
builder.outOfService();
|
||||
}
|
||||
ReadinessState state = this.applicationAvailability.getReadinessState();
|
||||
builder.status(ReadinessState.ACCEPTING_TRAFFIC == state ? Status.UP : Status.OUT_OF_SERVICE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user