The 0.11.0.0 client library added support for transactions; the KafkaTransactionManager
and other support for transactions has been added.
See the section called “Transactions” for more information.
The 0.11.0.0 client library added support for message headers; these can now be mapped to/from spring-messaging
MessageHeaders
.
See Section 4.1.5, “Message Headers” for more information.
The 0.11.0.0 client library provides an AdminClient
which can be used to create topics.
The KafkaAdmin
uses this client to automatically add topics defined as @Bean
s.
KafkaTemplate
now supports API to add records with timestamps.
New KafkaHeaders
have been introduced regarding timestamp
support.
Also new KafkaConditions.timestamp()
and KafkaMatchers.hasTimestamp()
testing utilities have been added.
See the section called “KafkaTemplate”, the section called “@KafkaListener Annotation” and Section 4.3, “Testing Applications” for more details.
You can now configure a KafkaListenerErrorHandler
to handle exceptions.
See the section called “Handling Exceptions” for more information.
By default, the @KafkaListener
id
property is now used as the group.id
property, overriding the property configured in the consumer factory (if present).
Further, you can explicitly configure the groupId
on the annotation.
Previously, you would have needed a separate container factory (and consumer factory) to use different group.id
s for listeners.
To restore the previous behavior of using the factory configured group.id
, set the idIsGroup
property on the annotation to false
.
For convenience a test class level @EmbeddedKafka
annotation is provided with the purpose to register KafkaEmbedded
as a bean.
See Section 4.3, “Testing Applications” for more information.
Starting with version 1.3.5, a new AfterRollbackProcessor
strategy is provided - see the section called “After Rollback Processor” for more information.
Support for configuring Kerberos is now provided. See Section 4.1.7, “Kerberos” for more information.
When a transaction is started by the listener container, the transactional.id
is now the transactionIdPrefix
appended with <group.id>.<topic>.<partition>
.
This is to allow proper fencing of zombies as described here.