X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fimplementation%2Fkafka%2FChannelReactiveHealthIndicator.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fimplementation%2Fkafka%2FChannelReactiveHealthIndicator.java;h=dcb6158d3b85af71887c5225e726bd598ae7efd7;hb=3ccd79c817eaedda7cef11d027d59e3fe1911e28;hp=0000000000000000000000000000000000000000;hpb=5168b2e2a25b5890fe39ea5fba16688f81b3d3a2;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/ChannelReactiveHealthIndicator.java b/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/ChannelReactiveHealthIndicator.java new file mode 100644 index 00000000..dcb6158d --- /dev/null +++ b/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/ChannelReactiveHealthIndicator.java @@ -0,0 +1,29 @@ +package de.juplo.kafka.chat.backend.implementation.kafka; + +import lombok.RequiredArgsConstructor; +import org.springframework.boot.actuate.health.AbstractReactiveHealthIndicator; +import org.springframework.boot.actuate.health.Health; +import reactor.core.publisher.Mono; + + +@RequiredArgsConstructor +public class ChannelReactiveHealthIndicator extends AbstractReactiveHealthIndicator +{ + private final Channel channel; + + + @Override + protected Mono doHealthCheck(Health.Builder builder) + { + return Mono + .fromSupplier(() -> channel.getChannelState()) + .map(state -> switch(state) + { + case STARTING -> builder.outOfService(); + case LOAD_IN_PROGRESS -> builder.outOfService(); + case READY -> builder.up(); + case SHUTTING_DOWN -> builder.down(); + }) + .map(healthBuilder -> healthBuilder.build()); + } +}