Refactoring
This commit is contained in:
54
src/main/java/com/lions/dev/health/KafkaHealthCheck.java
Normal file
54
src/main/java/com/lions/dev/health/KafkaHealthCheck.java
Normal file
@@ -0,0 +1,54 @@
|
||||
package com.lions.dev.health;
|
||||
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
||||
import org.eclipse.microprofile.health.HealthCheck;
|
||||
import org.eclipse.microprofile.health.HealthCheckResponse;
|
||||
import org.eclipse.microprofile.health.HealthCheckResponseBuilder;
|
||||
import org.eclipse.microprofile.health.Readiness;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Health check pour la connexion Kafka.
|
||||
* Vérifie que le broker Kafka est accessible.
|
||||
*
|
||||
* @since 2.0 - Production-ready
|
||||
*/
|
||||
@Readiness
|
||||
@ApplicationScoped
|
||||
public class KafkaHealthCheck implements HealthCheck {
|
||||
|
||||
@ConfigProperty(name = "kafka.bootstrap.servers", defaultValue = "localhost:9092")
|
||||
String bootstrapServers;
|
||||
|
||||
@Override
|
||||
public HealthCheckResponse call() {
|
||||
HealthCheckResponseBuilder responseBuilder = HealthCheckResponse.named("Kafka Connection");
|
||||
|
||||
try {
|
||||
// Parse the first bootstrap server
|
||||
String[] servers = bootstrapServers.split(",");
|
||||
String[] hostPort = servers[0].trim().split(":");
|
||||
String host = hostPort[0];
|
||||
int port = hostPort.length > 1 ? Integer.parseInt(hostPort[1]) : 9092;
|
||||
|
||||
// Try to connect
|
||||
try (Socket socket = new Socket()) {
|
||||
socket.connect(new InetSocketAddress(host, port), 2000);
|
||||
responseBuilder.up()
|
||||
.withData("bootstrapServers", bootstrapServers)
|
||||
.withData("status", "Kafka broker is reachable");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
responseBuilder.down()
|
||||
.withData("bootstrapServers", bootstrapServers)
|
||||
.withData("error", e.getMessage())
|
||||
.withData("status", "Kafka broker is NOT reachable");
|
||||
}
|
||||
|
||||
return responseBuilder.build();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user