Version 2.4.0 of Kafka for JUnit has been released. It increases all Kafka dependencies to 2.4.0 as well as the Testcontainers for Kafka dependency to 1.12.4.
Migration path
Unfortunately, the upgrade of the Kafka dependencies to their latest version introduced breaking changes into Kafka for JUnit. The default TopicManager implementation that comes with this library had to be re-written entirely, as the former ZkUtils-based approach is no longer working for Kafka 2.4.0.
- The
at
method ofExternalKafkaCluster
no longer requires a ZooKeeper connection URL. This means that instead of usingExternalKafkaCluster.at(bootstrapServers, zkConnectString)
, you have to useExternalKafkaCluster.at(bootstrapServers)
from now on. - To shield us from Kafka API changes, we copied the essential parts of the
kafka.api.LeaderAndIsr
class tonet.mguenther.kafka.junit.LeaderAndIsr
. The latter is a simple transfer object which closes only over the node IDs of the leader and the In-Sync-Replica set. This means: - Change package imports from
kafka.api.LeaderAndIsr
tonet.mguenther.kafka.junit.LeaderAndIsr
. - If you rely on
LeaderAndIsr#leader
in your test cases you should change that call toLeaderAndIsr#getLeader
. This is not necessary straight away, but the methodLeaderAndIsr#leader
will be removed with a future release.
Changelog
See the changelog on GitHub.
Features
Bugfixes
None.
Get it
You can obtain the binaries from Maven central or include the dependency using the following Maven coordinates in your build.
Maven
<dependency>
<groupId>net.mguenther.kafka</groupId>
<artifactId>kafka-junit</artifactId>
<version>2.4.0</version>
</dependency>
Gradle
compile 'net.mguenther.kafka:kafka-junit:2.4.0'