34.3 Apache Kafka Support by ys
Apache Kafka 는 spring-kafka
프로젝트 의 자동 구성을 제공하여 지원됩니다 .
Kafka 구성은 spring.kafka.*
의 외부 구성 등록 정보에 의해 제어됩니다. 예를 들어 application.properties
에 다음섹션을 선언 할 수 있습니다.
시작시 주제를 작하려면 NewTopic
유형의 bean을 추가하십시오. 주제가 이미 존재하면, bean은 무시됩니다.
34.3.1 메시지 보내기
Spring KafkaTemplate
은 자동으로 구성되며 다음 예제와 같이 직접 bean에서 자동으로 autowire 할 수 있습니다.
spring.kafka.producer.transaction-id-prefix
속성이 정의되면 KafkaTransactionManager
가 자동으로 구성됩니다. 또한 RecordMessageConverter
bean이 정의되면 자동으로 구성된 KafkaTemplate
과 연관됩니다 .
34.3.2 메시지 받기
Apache Kafka 하부 구조가 존재하면, 모든 bean에 @KafkaListener
주석을 붙여 리스너 엔드포인점을 작성할 수 있습니다 . KafkaListenerContainerFactory
가 정의되지 않은 경우 spring.kafka.listener.*
에 정의 된 키를 사용하여 기본값이 자동으로 구성됩니다 .
다음 구성 요소는 someTopic
주제에 리스너 엔드 포인트를 작성합니다 .
KafkaTransactionManager
bean 정의된 경우, 자동 컨테이너 팩토에 연결됩니다. 마찬가지로 RecordMessageConverter
, ErrorHandler
또는 AfterRollbackProcessor
bean이 정의된 경, 자동으로 기본 팩토리에 연결되어 있습니다.
사용자 정의 ChainedKafkaTransactionManager
는 일반적으로 자동 구성된 KafkaTransactionManager
bean을 참조 하므로 @Primary
로 표시해야합니다 .
34.3.3 카프카 Streams
Apache 용 Spring Kafka는 StreamsBuilder
객체를 생성하고 스트림의 라이프 사이클을 관리하기위한 팩토리 빈을 제공합니다. Spring Boot는kafka-streams
이 classpath에 있고 Kafka Streams가 @EnableKafkaStreams
annotation을 통해 활성화되어있는 한 필요한 KafkaStreamsConfiguration
빈을 자동으로 구성합니다.
Kafka 스트림을 사용하도록 설정하면 응용 프로그램 ID 및 부트 스트랩 서버를 설정해야합니다. 전자는 spring.kafka.streams.application-id
를 사용하여 구성 할 수 있으며, 설정하지 않으면 spring.application.name
이 기본값이됩니다. 후자는 전 세계적으로 또는 스트림에 대해서만 재정의되도록 설정할 수 있습니다.
전용 속성을 사용하여 몇 가지 추가 속성을 사용할 수 있습니다. 다른 임의의 카프카 속성은 spring.kafka.streams.properties
네임 스페이스를 사용하여 설정할 수 있습니다 . 더 자세한 정보 는 34.3.4 절. "추가 카프카 속성" 을 참고하십시오.
Factory Bean을 사용하려면 다음 예제와 같이 StreamsBuilder
를@Bean
으로 연결하면됩니다.
기본적으로 생성하는 StreamBuilder
객체에 의해 관리되는 스트림은 자동으로 시작됩니다. spring.kafka.streams.auto-startup
속성을 사용하여이 동작을 사용자 정의 할 수 있습니다.
34.3.4 추가 카프카 속성
자동 구성에서 지원되는 등록 정보는 부록 A, 일반적인 응용 프로그램 등록 정보 에 나와 있습니다 . 대부분의 경우 이러한 속성 (하이픈 또는 낙타)은 Apache Kafka 점선으로 표시된 속성에 직접 매핑됩니다. 자세한 내용은 Apache Kafka 문서를 참조하십시오.
이러한 속성의 처음 몇 가지는 모든 구성 요소 (제작자, 소비자, 관리자 및 스트림)에 적용되지만 다른 값을 사용하려는 경우 구성 요소 수준에서 지정할 수 있습니다. Apache Kafka는 중요도가 HIGH, MEDIUM 또는 LOW 인 속성을 지정합니다. 스프링 부트 자동 구성은 모든 중요도 높은 속성, 일부 선택된 중간 및 낮음 속성 및 기본값이없는 속성을 지원합니다.
Kafka가 지원하는 속성의 하위 집합 만 KafkaProperties
클래스를 통해 직접 사용할 수 있습니다 . 직접 지원되지 않는 추가 속성으로 제작자 또는 소비자를 구성하려면 다음 속성을 사용하십시오.
이것은 일반적인 prop.one
Kafka 속성을 first
(생산자, 소비자 및 관리자에게 적용), prop.two
관리자 속성을 second
, prop.three
소비자 속성을 third
, prop.four
프로듀서 속성을 fourth
, prop.five
스트림 속성을 fifth
로 설정합니다.
다음과 같이 스프링 카프카 JsonDeserializer
를 설정할 수도 있습니다 :
마찬가지로 JsonSerializer
헤더에 유형 정보를 보내는 기본 동작을 비활성화 할 수 있습니다.
중대한
이 방법으로 설정된 특성은 스프링 부트가 명시 적으로 지원하는 모든 구성 항목보다 우선합니다.
Last updated
Was this helpful?