diff --git a/README.md b/README.md index 5eb3a16..9065af9 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dropwizard_dropwizard-kafka&metric=alert_status)](https://sonarcloud.io/dashboard?id=dropwizard_dropwizard-kafka) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.dropwizard.modules/dropwizard-kafka/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.dropwizard.modules/dropwizard-kafka/) -Provides easy integration for Dropwizard applications with the Apache Kafka client. +Provides easy integration for Dropwizard applications with the Apache Kafka client. This bundle comes with out-of-the-box support for: -* YAML Configuration integration +* YAML Configuration integration * Producer and Consumer lifecycle management * Producer and Cluster connection health checks * Metrics integration for the Kafka client @@ -16,14 +16,16 @@ This bundle comes with out-of-the-box support for: For more information on Kafka, take a look at the official documentation here: http://kafka.apache.org/documentation/ ## Dropwizard Version Support Matrix -dropwizard-kafka | Dropwizard v1.3.x | Dropwizard v2.0.x | Dropwizard v2.1.x ------------------------ | ------------------ | ------------------ | ------------------ -v1.3.x | :white_check_mark: | :white_check_mark: | :white_check_mark: -v1.4.x | :white_check_mark: | :white_check_mark: | :white_check_mark: -v1.5.x | :white_check_mark: | :white_check_mark: | :white_check_mark: -v1.6.x | | :white_check_mark: | :white_check_mark: -v1.7.x | | :white_check_mark: | :white_check_mark: -v1.8.x | | | :white_check_mark: +| dropwizard-kafka | Dropwizard v1.3.x | Dropwizard v2.0.x | Dropwizard v2.1.x | Dropwizard v3.0.x | Dropwizard v4.0.x | +|------------------|--------------------|--------------------|--------------------|--------------------|--------------------| +| v1.3.x | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| v1.4.x | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| v1.5.x | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| v1.6.x | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| v1.7.x | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| v1.8.x | :x: | :x: | :white_check_mark: | :x: | :x: | +| v3.0.x | :x: | :x: | :x: | :white_check_mark: | :x: | +| v4.0.x | :x: | :x: | :x: | :x: | :white_check_mark: | ## Usage Add dependency on library. @@ -131,14 +133,14 @@ public void run(ExampleConfiguration config, Environment environment) { Configure your factory in your `config.yml` file: ```yaml -consumer: +consumer: type: basic bootstrapServers: - 127.0.0.1:9092 - 127.0.0.1:9093 - 127.0.0.1:9094 consumerGroupId: consumer1 - name: consumerNameToBeUsedInMetrics + name: consumerNameToBeUsedInMetrics keyDeserializer: type: string valueDeserializer: @@ -168,7 +170,7 @@ For example, say you would like to use version `1.1.1` of the Kafka client. One ${dropwizard.version} -``` +``` ## Adding support for additional serializers and/or deserializers In order to support additional serializers or deserializers, you'll need to create a new factory: @@ -179,11 +181,11 @@ public class MySerializerFactory extends SerializerFactory { @NotNull @JsonProperty private String someConfig; - + public String getSomeConfig() { return someConfig; } - + public void setSomeConfig(final String someConfig) { this.someConfig = someConfig; } @@ -196,14 +198,14 @@ public class MySerializerFactory extends SerializerFactory { } ``` -Then you will need to add the following files to your `src/main/resources/META-INF/services` directory in order to support Jackson +Then you will need to add the following files to your `src/main/resources/META-INF/services` directory in order to support Jackson polymorphic serialization: File named `io.dropwizard.jackson.Discoverable`: ``` io.dropwizard.kafka.serializer.SerializerFactory -``` +``` File named `io.dropwizard.kafka.serializer.SerializerFactory`: diff --git a/pom.xml b/pom.xml index 97bd291..7d98756 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,7 @@ https://sonarcloud.io 5.15.0 - 2.1.6 + 3.0.0 3.4.0 2.9.7 @@ -160,8 +160,8 @@ - junit - junit + org.junit.vintage + junit-vintage-engine test diff --git a/src/main/java/io/dropwizard/kafka/BasicKafkaConsumerFactory.java b/src/main/java/io/dropwizard/kafka/BasicKafkaConsumerFactory.java index e60ed61..e12bb89 100644 --- a/src/main/java/io/dropwizard/kafka/BasicKafkaConsumerFactory.java +++ b/src/main/java/io/dropwizard/kafka/BasicKafkaConsumerFactory.java @@ -9,6 +9,7 @@ import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRebalanceListener; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,8 +18,6 @@ import java.util.Map; import java.util.Optional; -import javax.annotation.Nullable; - import static java.util.Objects.requireNonNull; @JsonTypeName("basic") diff --git a/src/main/java/io/dropwizard/kafka/BasicKafkaProducerFactory.java b/src/main/java/io/dropwizard/kafka/BasicKafkaProducerFactory.java index 384a26a..f570b28 100644 --- a/src/main/java/io/dropwizard/kafka/BasicKafkaProducerFactory.java +++ b/src/main/java/io/dropwizard/kafka/BasicKafkaProducerFactory.java @@ -7,6 +7,7 @@ import io.dropwizard.lifecycle.setup.LifecycleEnvironment; import org.apache.kafka.clients.CommonClientConfigs; import org.apache.kafka.clients.producer.Producer; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,8 +17,6 @@ import java.util.Map; import java.util.Optional; -import javax.annotation.Nullable; - import static java.util.Objects.requireNonNull; @JsonTypeName("basic") diff --git a/src/main/java/io/dropwizard/kafka/KafkaAdminClientBundle.java b/src/main/java/io/dropwizard/kafka/KafkaAdminClientBundle.java index 2b9a569..a09899c 100644 --- a/src/main/java/io/dropwizard/kafka/KafkaAdminClientBundle.java +++ b/src/main/java/io/dropwizard/kafka/KafkaAdminClientBundle.java @@ -1,20 +1,19 @@ package io.dropwizard.kafka; import brave.Tracing; -import io.dropwizard.Configuration; -import io.dropwizard.ConfiguredBundle; -import io.dropwizard.setup.Bootstrap; -import io.dropwizard.setup.Environment; +import io.dropwizard.core.Configuration; +import io.dropwizard.core.ConfiguredBundle; +import io.dropwizard.core.setup.Bootstrap; +import io.dropwizard.core.setup.Environment; import org.apache.kafka.clients.admin.AdminClient; import org.apache.kafka.clients.admin.NewTopic; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.Objects; -import javax.annotation.Nullable; - import static java.util.Objects.requireNonNull; public abstract class KafkaAdminClientBundle implements ConfiguredBundle { diff --git a/src/main/java/io/dropwizard/kafka/KafkaConsumerBundle.java b/src/main/java/io/dropwizard/kafka/KafkaConsumerBundle.java index f932cfa..3e065d3 100644 --- a/src/main/java/io/dropwizard/kafka/KafkaConsumerBundle.java +++ b/src/main/java/io/dropwizard/kafka/KafkaConsumerBundle.java @@ -1,20 +1,19 @@ package io.dropwizard.kafka; import brave.Tracing; -import io.dropwizard.Configuration; -import io.dropwizard.ConfiguredBundle; -import io.dropwizard.setup.Bootstrap; -import io.dropwizard.setup.Environment; +import io.dropwizard.core.Configuration; +import io.dropwizard.core.ConfiguredBundle; +import io.dropwizard.core.setup.Bootstrap; +import io.dropwizard.core.setup.Environment; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRebalanceListener; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.Objects; -import javax.annotation.Nullable; - import static java.util.Objects.requireNonNull; public abstract class KafkaConsumerBundle implements ConfiguredBundle { diff --git a/src/main/java/io/dropwizard/kafka/KafkaConsumerFactory.java b/src/main/java/io/dropwizard/kafka/KafkaConsumerFactory.java index afd0dbc..77e238c 100644 --- a/src/main/java/io/dropwizard/kafka/KafkaConsumerFactory.java +++ b/src/main/java/io/dropwizard/kafka/KafkaConsumerFactory.java @@ -16,12 +16,12 @@ import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRebalanceListener; import org.apache.kafka.clients.consumer.KafkaConsumer; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import javax.annotation.Nullable; import javax.validation.Valid; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; diff --git a/src/main/java/io/dropwizard/kafka/KafkaProducerBundle.java b/src/main/java/io/dropwizard/kafka/KafkaProducerBundle.java index eca8cc2..388542b 100644 --- a/src/main/java/io/dropwizard/kafka/KafkaProducerBundle.java +++ b/src/main/java/io/dropwizard/kafka/KafkaProducerBundle.java @@ -1,18 +1,17 @@ package io.dropwizard.kafka; import brave.Tracing; -import io.dropwizard.Configuration; -import io.dropwizard.ConfiguredBundle; -import io.dropwizard.setup.Bootstrap; -import io.dropwizard.setup.Environment; +import io.dropwizard.core.Configuration; +import io.dropwizard.core.ConfiguredBundle; +import io.dropwizard.core.setup.Bootstrap; +import io.dropwizard.core.setup.Environment; import org.apache.kafka.clients.producer.Producer; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.Collection; import java.util.Collections; import java.util.Map; -import javax.annotation.Nullable; - import static java.util.Objects.requireNonNull; public abstract class KafkaProducerBundle implements ConfiguredBundle { diff --git a/src/main/java/io/dropwizard/kafka/KafkaProducerFactory.java b/src/main/java/io/dropwizard/kafka/KafkaProducerFactory.java index 30f3a89..16dbb82 100644 --- a/src/main/java/io/dropwizard/kafka/KafkaProducerFactory.java +++ b/src/main/java/io/dropwizard/kafka/KafkaProducerFactory.java @@ -18,8 +18,8 @@ import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.common.record.CompressionType; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nullable; import javax.validation.Valid; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; diff --git a/src/main/java/io/dropwizard/kafka/MockKafkaConsumerFactory.java b/src/main/java/io/dropwizard/kafka/MockKafkaConsumerFactory.java index 834d4a6..d35ad4c 100644 --- a/src/main/java/io/dropwizard/kafka/MockKafkaConsumerFactory.java +++ b/src/main/java/io/dropwizard/kafka/MockKafkaConsumerFactory.java @@ -8,8 +8,8 @@ import org.apache.kafka.clients.consumer.ConsumerRebalanceListener; import org.apache.kafka.clients.consumer.MockConsumer; import org.apache.kafka.clients.consumer.OffsetResetStrategy; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nullable; import java.util.Map; @JsonTypeName("mock") diff --git a/src/main/java/io/dropwizard/kafka/MockKafkaProducerFactory.java b/src/main/java/io/dropwizard/kafka/MockKafkaProducerFactory.java index 653f63c..8e25140 100644 --- a/src/main/java/io/dropwizard/kafka/MockKafkaProducerFactory.java +++ b/src/main/java/io/dropwizard/kafka/MockKafkaProducerFactory.java @@ -6,8 +6,8 @@ import io.dropwizard.lifecycle.setup.LifecycleEnvironment; import org.apache.kafka.clients.producer.MockProducer; import org.apache.kafka.clients.producer.Producer; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nullable; import java.util.Collection; import java.util.Map;