= Kafka Health Check :uri-build-status: https://travis-ci.org/deviceinsight/kafka-health-check :img-build-status: https://api.travis-ci.org/deviceinsight/kafka-health-check.svg?branch=master image:{img-build-status}[Build Status Badge,link={uri-build-status}] This library provides a kafka health check for spring boot actuator. == Usage Add the following dependency to your `pom.xml` [source,xml] .... com.deviceinsight.kafka kafka-health-check 1.3.0 .... In the same maven module you can configure the topic, poll timeouts, subscription timeouts and the receive timeouts in the `application.yml` An example for an `application.yaml` is: [source,yaml] .... kafka: health: topic: health-checks sendReceiveTimeout: 2.5s pollTimeout: 200ms subscriptionTimeout: 5s .... The values shown are the defaults. IMPORTANT: Make sure the configured health check topic exists! [source,java] .... @Bean @ConfigurationProperties("kafka.health") public KafkaHealthProperties kafkaHealthProperties() { return new KafkaHealthProperties(); } .... [source,java] .... @Bean public KafkaConsumingHealthIndicator kafkaConsumingHealthIndicator(KafkaHealthProperties kafkaProperties, KafkaProperties processingProperties) { return new KafkaConsumingHealthIndicator(kafkaHealthProperties, processingProperties.buildConsumerProperties(), processingProperties.buildProducerProperties()); } .... Now if you call the actuator endpoint `actuator/health` you should see the following output: [source,json] .... { "status" : "UP", "details" : { "kafkaConsuming" : { "status" : "UP" } } } .... == Configuration |=== |Property |Default |Description |kafka.health.topic |`health-checks` | Topic to subscribe to |kafka.health.sendReceiveTimeout |2.5s | The maximum time, given as https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-conversion-duration[Duration], to wait for sending and receiving the message. |kafka.health.pollTimeout |200ms | The time, given as https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-conversion-duration[Duration], spent fetching the data from the topic |kafka.health.subscriptionTimeout |5s | The maximum time, given as https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-conversion-duration[Duration], to wait for subscribing to topic |kafka.health.cache.maximumSize |200 | Specifies the maximum number of entries the cache may contain. |=== == Releasing Creating a new release involves the following steps: . `./mvnw gitflow:release-start gitflow:release-finish` . `git push origin master` . `git push --tags` . `git push origin develop` In order to deploy the release to Maven Central, you need to create an account at https://issues.sonatype.org and configure your account in `~/.m2/settings.xml`: [source,xml] .... ossrh your-jira-id your-jira-pwd .... The account also needs access to the project on Maven Central. This can be requested by another project member. Then check out the release you want to deploy (`git checkout x.y.z`) and run `./mvnw deploy -Prelease`.