This version is still in development and is not considered stable yet. For the latest stable version, please use Spring for Apache Kafka 3.2.3!

What’s new?

What’s New in 3.3 Since 3.2

This section covers the changes made from version 3.2 to version 3.3. For changes in earlier version, see Change History.

DLT Topic Naming Convention

The naming convention for DLT topics has been standardized to use the "-dlt" suffix consistently. This change ensures compatibility and avoids conflicts when transitioning between different retry solutions. Users who wish to retain the ".DLT" suffix behavior need to opt-in explicitly by setting the appropriate DLT name property.

Enhanced Seek Operations for Consumer Groups

A new method, getGroupId(), has been added to the ConsumerSeekCallback interface. This method allows for more selective seek operations by targeting only the desired consumer group. The AbstractConsumerSeekAware can also now register, retrieve, and remove all callbacks for each topic partition in a multi-group listener scenario without missing any. See the new APIs (getSeekCallbacksFor(TopicPartition topicPartition), getTopicsAndCallbacks()) for more details. For more details, see Seek API Docs.

Configurable Handling of Empty Batches in Kafka Listener with RecordFilterStrategy

RecordFilterStrategy now supports ignoring empty batches that result from filtering. This can be configured through overriding default method ignoreEmptyBatch(), which defaults to false, ensuring KafkaListener is invoked even if all ConsumerRecords are filtered out. For more details, see Message receive filtering Docs.

ConcurrentContainerStoppedEvent

The ConcurentContainerMessageListenerContainer emits now a ConcurrentContainerStoppedEvent when all of its child containers are stopped. For more details, see Application Events and ConcurrentContainerStoppedEvent Javadocs.

Original Record Key in Reply

When using ReplyingKafkaTemplate, if the original record from the request contains a key, then that same key will be part of the reply as well. For more details, see Sending Messages section of the reference docs.