Document `@EmbeddedKafka` and its interaction with Spring Boot

See gh-15834
This commit is contained in:
Artem Bilan 2019-02-01 15:55:26 -05:00 committed by Andy Wilkinson
parent 6c0dbacfce
commit 4e79408bb0
1 changed files with 36 additions and 0 deletions

View File

@ -6283,6 +6283,42 @@ spring.kafka.producer.properties.spring.json.add.type.headers=false
IMPORTANT: Properties set in this way override any configuration item that Spring Boot
explicitly supports.
[[boot-features-embedded-kafka]]
==== Testing with Embedded Kafka
Spring for Apache Kafka provides a convenient way to test projects with an embedded Apache Kafka
broker. This feature is available via an `@EmbeddedKafka` test class level annotation from the
`spring-kafka-test` dependency. See more information in the Spring for Apache Kafka
https://docs.spring.io/spring-kafka/docs/current/reference/html/#embedded-kafka-annotation[reference manual].
To make Spring Boot auto-configuration work with the mentioned embedded Apache Kafka broker, you need
to remap a system property for embedded broker addresses (populated by the `EmbeddedKafkaBroker`)
into Spring Boot configuration property for Apache Kafka. There are several ways to do that:
* Provide a system property to map embedded broker addresses into `spring.kafka.bootstrap-servers` in the test class:
[source,java,indent=0]
----
static {
System.setProperty(EmbeddedKafkaBroker.BROKER_LIST_PROPERTY, "spring.kafka.bootstrap-servers");
}
----
* Configuring a property name on the `@EmbeddedKafka` annotation:
[source,java,indent=0]
----
@EmbeddedKafka(topics = "someTopic",
bootstrapServersProperty = "spring.kafka.bootstrap-servers")
----
* Via placeholders in configuration properties:
[source,properties,indent=0]
----
spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}
----
[[boot-features-resttemplate]]
== Calling REST Services with `RestTemplate`
If you need to call remote REST services from your application, you can use the Spring