Featured image for Kafka Monthly Digest on Red Hat Developer.

This is the 52nd edition of the Kafka Monthly Digest, and covers what happened in the Apache Kafka community in May 2022.

For last month’s digest, see Kafka Monthly Digest: April 2022.

Releases

There are two new releases, 3.2.0 and 3.1.1, and the planning for 3.3.0 has already begun.

3.2.0

Bruno Cadonna released Kafka 3.2.0 on May 17 and published an announcement on the Apache blog. As always, you can find the complete list of changes in the release notes or the release plan on the Kafka wiki.

Note that running Kafka in KRaft mode (without ZooKeeper) is still not ready for production.

This new minor release brings many new interesting features, which I'll highlight in the next few sections.

Kafka brokers and clients

Updates to the Kafka broker and clients include the following:

  • There's a new built-in authorizer, StandardAuthorizer, that does not depend on ZooKeeper (KIP-801).

  • The TCP backlog queue size can be changed via a new setting, socket.listen.backlog.size (KIP-764).

  • The number of network threads can now be configured per listener (KIP-788).

  • Consumers can provide a reason when joining or leaving a consumer group (KIP-800).

  • kafka-console-producer can now produce records with headers and null values (KIP-798 and KIP-810).

Kafka Connect

Updates to Kafka Connect include the following:

  • New REST endpoints to list all connector plugins and retrieve their configuration definitions (KIP-769).

  • A new mechanism for source connectors to handle producer failures (KIP-779).

Kafka Streams

Updates to Kafka Streams include the following:

  • Support for rack awareness (KIP-708).

  • A new interface for interactive queries. This is available in early access in this release (KIP-796, KIP-805, KIP-806).

3.1.1

Tom Bentley released 3.1.1 on May 13. This bugfix version addresses 30 JIRA tickets, including a few blockers. For more details, see the release notes or the release plan.

3.3.0

On May 11, José Armando García Sancio volunteered to run the next minor release, 3.3.0. The release date is currently expected in August and you can find the release plan in the Kafka wiki.

Kafka Improvement Proposals

Last month, the community submitted 15 KIPs (KIP-832 to KIP-846). I'll highlight a few of them:

  • KIP-833: Mark KRaft as production ready. Work on removing ZooKeeper is progressing and this KIP proposes a timeline for the remaining steps. The proposal is to mark KRaft production ready in the next minor release, 3.3.0. Then the goal is to support upgrades from ZooKeeper clusters to KRaft and deprecate ZooKeeper in 3.4.0. Version 3.5.0 should be the last release to support both modes, so ZooKeeper support should finally be removed completely in 4.0.0. Based on the current time based release process with a release every four months, this plan could be complete in mid 2023.

  • KIP-839: Provide builders for KafkaProducer/KafkaConsumer and KafkaStreams. In order to create a Kafka client, users have to create its configuration using Properties or Map collections. While this mechanism is simple to use, it's not very flexible for frameworks injecting dependencies such as interceptors, metrics reporters, SerDes, etc. This KIP proposes providing builders that can accept preconfigured dependencies that are often used by frameworks like Spring.

  • KIP-842: Add richer group offset reset mechanisms. Consumers use the auto.offset.reset setting, with latest or earliest, to determine the next offset to process in case they don't have any committed offsets. This KIP proposes adding new values to support new scenarios such as always resetting offsets even with committed offsets, or resetting to the nearest offset in case of OffsetOutOfRangeException.

  • KIP-844: Transactional state stores. Today, when exactly once semantics are enabled in Streams, state stores are still updated in a non-transactional way. In case of a crash, local state stores have to be cleared and rebuilt from scratch. This KIP aims at addressing this limitation by ensuring all updates to state stores are transactional as well if exactly once is enabled.

Community releases

  • Sarama 1.33: Sarama is a pure Golang Kafka client. This new release adds support for SASL reauthentication (KIP-368) and batch ACL creation.

  • strimzi-kafka-operator 0.29: Strimzi is a Kubernetes Operator for running Kafka. This version supports Kafka 3.0.1, 3.1.1 and 3.2.0. The KafkaRebalance resource has been updated with modes to rebalance clusters based on scenarios (full, add-brokers, remove-brokers).

  • akhq 0.21.0. AKHQ is a GUI for Apache Kafka. This release brings a number of enhancements to the UI, especially around producing and visualizing data, and also includes many bug fixes.

Blogs

I selected some interesting blog posts and articles that were published last month:

To learn more about Kafka, visit Red Hat Developer's Apache Kafka topic page.

Last updated: September 20, 2023