Commit b7ae5586 authored by Stephane Nicoll's avatar Stephane Nicoll

Polish "Improve Kafka Auto-configuration"

Closes gh-14215
parent 59c6dc5c
...@@ -78,7 +78,7 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer { ...@@ -78,7 +78,7 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer {
* Set the {@link KafkaAwareTransactionManager} to use. * Set the {@link KafkaAwareTransactionManager} to use.
* @param transactionManager the transaction manager * @param transactionManager the transaction manager
*/ */
public void setTransactionManager( void setTransactionManager(
KafkaAwareTransactionManager<Object, Object> transactionManager) { KafkaAwareTransactionManager<Object, Object> transactionManager) {
this.transactionManager = transactionManager; this.transactionManager = transactionManager;
} }
...@@ -87,7 +87,7 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer { ...@@ -87,7 +87,7 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer {
* Set the {@link ErrorHandler} to use. * Set the {@link ErrorHandler} to use.
* @param errorHandler the error handler * @param errorHandler the error handler
*/ */
public void setErrorHandler(ErrorHandler errorHandler) { void setErrorHandler(ErrorHandler errorHandler) {
this.errorHandler = errorHandler; this.errorHandler = errorHandler;
} }
...@@ -95,7 +95,7 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer { ...@@ -95,7 +95,7 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer {
* Set the {@link AfterRollbackProcessor} to use. * Set the {@link AfterRollbackProcessor} to use.
* @param afterRollbackProcessor the after rollback processor * @param afterRollbackProcessor the after rollback processor
*/ */
public void setAfterRollbackProcessor( void setAfterRollbackProcessor(
AfterRollbackProcessor<Object, Object> afterRollbackProcessor) { AfterRollbackProcessor<Object, Object> afterRollbackProcessor) {
this.afterRollbackProcessor = afterRollbackProcessor; this.afterRollbackProcessor = afterRollbackProcessor;
} }
......
/* /*
* Copyright 2012-2017 the original author or authors. * Copyright 2012-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -75,8 +75,8 @@ class KafkaAnnotationDrivenConfiguration { ...@@ -75,8 +75,8 @@ class KafkaAnnotationDrivenConfiguration {
configurer.setKafkaProperties(this.properties); configurer.setKafkaProperties(this.properties);
configurer.setMessageConverter(this.messageConverter); configurer.setMessageConverter(this.messageConverter);
configurer.setReplyTemplate(this.kafkaTemplate); configurer.setReplyTemplate(this.kafkaTemplate);
configurer.setErrorHandler(this.errorHandler);
configurer.setTransactionManager(this.transactionManager); configurer.setTransactionManager(this.transactionManager);
configurer.setErrorHandler(this.errorHandler);
configurer.setAfterRollbackProcessor(this.afterRollbackProcessor); configurer.setAfterRollbackProcessor(this.afterRollbackProcessor);
return configurer; return configurer;
} }
......
...@@ -5628,18 +5628,6 @@ When the Apache Kafka infrastructure is present, any bean can be annotated with ...@@ -5628,18 +5628,6 @@ When the Apache Kafka infrastructure is present, any bean can be annotated with
`@KafkaListener` to create a listener endpoint. If no `KafkaListenerContainerFactory` has `@KafkaListener` to create a listener endpoint. If no `KafkaListenerContainerFactory` has
been defined, a default one is automatically configured with keys defined in been defined, a default one is automatically configured with keys defined in
`spring.kafka.listener.*`. `spring.kafka.listener.*`.
If the property `spring.kafka.producer.transaction-id-prefix` is defined, a
`KafkaTransactionManager` will be auto-configured with name `kafkaTransactionManager` and
will be wired into the container factory.
Also, if `RecordMessageConverter`, `ErrorHandler` and/or
`AfterRollbackProcessor` beans are defined, they are automatically associated to the
default factory.
IMPORTANT: The auto configuration of these beans occur if there is just a single
instance.
When using a `ChainedKafkaTransactionManager`, it will usually reference the configured
`KafkaTransactionManager` bean, so the chained manager must be marked
`@Primary` if you want it wired into the container factory.
The following component creates a listener endpoint on the `someTopic` topic: The following component creates a listener endpoint on the `someTopic` topic:
...@@ -5656,6 +5644,16 @@ The following component creates a listener endpoint on the `someTopic` topic: ...@@ -5656,6 +5644,16 @@ The following component creates a listener endpoint on the `someTopic` topic:
} }
---- ----
If a `KafkaTransactionManager` bean is defined, it is automatically associated to the
container factory. Similarly, if a `RecordMessageConverter`, `ErrorHandler` or
`AfterRollbackProcessor` bean is defined, it is automatically associated to the default
factory.
TIP: A custom `ChainedKafkaTransactionManager` must be marked `@Primary` as it usually
reference the auto-configured `KafkaTransactionManager` bean.
[[boot-features-kafka-streams]] [[boot-features-kafka-streams]]
==== Kafka Streams ==== Kafka Streams
Spring for Apache Kafka provides a factory bean to create a `StreamsBuilder` object and Spring for Apache Kafka provides a factory bean to create a `StreamsBuilder` object and
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment