1. What’s New in 3.0 Since 2.9

This section covers the changes made from version 2.9 to version 3.0. For changes in earlier version, see [history].

1.1. Kafka Client Version

This version requires the 3.3.1 kafka-clients.

1.2. Exactly Once Semantics

EOSMode.V1 (aka ALPHA) is no longer supported.

When using transactions, the minimum broker version is 2.5.

See [exactly-once] and KIP-447 for more information.

1.3. Observation

Enabling observation for timers and tracing using Micrometer is now supported. See [observation] for more information.

1.4. Native Images

Support for creating native images is provided. See [native-images] for more information.

1.5. Global Single Embedded Kafka

The embedded Kafka (EmbeddedKafkaBroker) can now be start as a single global instance for the whole test plan. See [same-broker-multiple-tests] for more information.

1.6. Retryable Topics Changes

This feature is no longer considered experimental (as far as its API is concerned), the feature itself has been supported since 2.7, but with a greater than normal possibility of breaking API changes.

The bootstrapping of [retry-topic] infrastructure beans has changed in this release to avoid some timing problems that occurred in some application regarding application initialization.

You can now set a different concurrency for the retry containers; by default, the concurrency is the same as the main container.

@RetryableTopic can now be used as a meta-annotation on custom annotations, including support for @AliasFor properties.

See [retry-config] for more information.

The default replication factor for the retry topics is now -1 (use broker default). If your broker is earlier that version 2.4, you will now need to explicitly set the property.

You can now configure multiple @RetryableTopic listeners on the same topic in the same application context. Previously, this was not possible. See [multi-retry] for more information.

There are breaking API changes in RetryTopicConfigurationSupport; specifically, if you override the bean definition methods for destinationTopicResolver, kafkaConsumerBackoffManager and/or retryTopicConfigurer; these methods now require an ObjectProvider<RetryTopicComponentFactory> parameter.

1.7. Listener Container Changes

Events related to consumer authentication and authorization failures are now published by the container. See [events] for more information.

You can now customize the thread names used by consumer threads. See [container-thread-naming] for more information.

1.8. KafkaTemplate Changes

The futures returned by this class are now CompletableFuture s instead of ListenableFuture s. See [kafka-template].

1.9. ReplyingKafkaTemplate Changes

The futures returned by this class are now CompletableFuture s instead of ListenableFuture s. See [replying-template] and [exchanging-messages].

1.10. @KafkaListener Changes

You can now use a custom correlation header which will be echoed in any reply message. See the note at the end of [replying-template] for more information.