2017-05-18 14 views
0

spring kafka를 멀티 스레드 기능 (ConcurrentKafkaListenerContainerFactory)과 함께 사용하면 다음과 같은 두 가지 유형의 스레드 이름을 찾을 수 있습니다. 1. # 0-1-kafka-consumer-1 2 # 0-1-kafka-listener-3spring kafka에서 소비자와 리스너를 이해하는 방법

이렇게 두 종류의 스레드를 어떻게 이해할 수 있습니까? 그들 사이의 관계는 무엇입니까? 미리 감사드립니다.

답변

1

소비자 스레드는 메시지의 경우 KafkaConsumer을 폴링하여 수신기를 수신하는 리스너 스레드로 전달합니다.

느린 수신기로 인해 파티션 재조정이 발생할 수 있으므로 초기 버전의 KafkaConsumer에서 필요합니다. 소비자 스레드에서 하트 비트를 보내야했습니다.

이제는 KafkaConsumer (하트 비트가 백그라운드에서 전송 됨)에서이 문제가 해결되었으므로 2.0에서는 스레드 유형이 하나만 있고 수신기는 소비자 스레드에서 호출됩니다. 2.0.0.M2 (마일스톤 2)는 현재 사용할 수 있습니다. 다음 달 말경에 출시 될 예정입니다.

+0

안녕하세요 Gary 다시 u를 만나서 반가워요! 나는 질문 할 기본 질문이있다 : 만약 partitionA와 partionB 둘 다 consumerA에 할당된다면, consumerA는 동시에 그것들을 소비 할 것인가? 또는 먼저 partionA의 모든 msg를 소비 한 다음 partitionB의 msg를 사용합니까? –

+0

그것은 kafka 사람들을위한 질문입니다. 나는 그들의 내부 알고리즘을 모른다. –

0

슬로우 리스너가있는 고통이었던 이전 카프카 버전 (< 0.10.1)에서. 작동하지 않는 소비자 스레드가 죽은 것으로 간주되어 재조정이 발생했습니다. 그래서 우리는 스레드 손을 도입하고 리스너에서 처리 할 레코드를 별도의 스레드에 전달한 것입니다. 그래서, 그 스레드 접두사는 정확히 그것에 관한 것입니다.

최신 버전 2.0에서는 Kafka 0.10.2을 기반으로 Kafka 클라이언트 자체에서 적절하게 하트 비트가 발생하므로 해당 논리를 제거했습니다. 따라서 더 이상 느린 청취자는 더 이상 걱정할 필요가 없습니다. 모든 것이 이제 소비자 스레드에서 작동합니다.

+0

빠른 답변 주셔서 감사합니다.하지만 저는 여전히 2 가지 질문이 있습니다. 1. 느린 청취자가 무엇인지 설명 할 수 있습니까? 2. 소비자 스레드와 수신기 스레드 사이의 관계는 1 : 1로 맞습니까? –