TMP:test:FIX
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / implementation / kafka / ChannelReactiveHealthIndicator.java
1 package de.juplo.kafka.chat.backend.implementation.kafka;
2
3 import lombok.RequiredArgsConstructor;
4 import org.springframework.boot.actuate.health.AbstractReactiveHealthIndicator;
5 import org.springframework.boot.actuate.health.Health;
6 import reactor.core.publisher.Mono;
7
8
9 @RequiredArgsConstructor
10 public class ChannelReactiveHealthIndicator extends AbstractReactiveHealthIndicator
11 {
12   private final Channel channel;
13
14
15   @Override
16   protected Mono<Health> doHealthCheck(Health.Builder builder)
17   {
18     return Mono
19         .fromSupplier(() -> channel.getChannelState())
20         .map(state  -> switch(state)
21             {
22               case STARTING -> builder.outOfService();
23               case LOAD_IN_PROGRESS -> builder.outOfService();
24               case READY -> builder.up();
25               case SHUTTING_DOWN -> builder.down();
26             })
27         .map(healthBuilder -> healthBuilder.build());
28   }
29 }