Apache Kafka를 위한 Spring에서 Shar... 노트
RSS 봄

Apache Kafka를 위한 Spring에서 Share Consumer Support (Kafka 큐) 소개

아파치 카프카 4.0.0: 공유 그룹 소개 아파치 카프카 4.0.0은 기존의 소비자 그룹과 함께 새로운 소비 모델인 공유 그룹을 도입했습니다. 공유 그룹은 전체 파티션이 아닌 개별 레코드를 분배하여 유연성을 높이기 위해 레코드 수준의 분배를 제공합니다. 이는 파티션이 특정 소비자에게 할당되어 해당 파티션 내에서 순서를 보장하는 기존 소비자 그룹과는 다릅니다. 공유 그룹은 처리량 우선순위가 높고 독립적인 이벤트에 이상적입니다. 또한 가변적인 수요가 있는 워크로드에 대한 동적 스케일링 이점을 제공합니다. 기존 소비자 그룹은 순서 처리가 중요하거나 파티션 선호도가 필요한 상태 저장 처리에 여전히 필수적입니다. 공유 그룹에서 브로커 수준의 공유 코디네이터가 레코드 분배를 관리합니다. 레코드는 시간 기반 잠금으로 소비자가 획득하며, 타임아웃 내에 승인되지 않으면 자동으로 풀로 반환됩니다. 소비자는 레코드를 ACCEPT(수락), RELEASE(재시도), REJECT(영구 실패)로 승인할 수 있습니다. 브로커는 전달 시도를 추적하며, 독성 메시지로부터 보호하기 위해 구성된 제한을 초과하면 자동으로 메시지를 보관합니다. Spring for Apache Kafka 4.0.0은 공유 그룹을 완벽하게 지원하며, 프로그래밍 방식의 컨테이너 생성과 어노테이션 기반의 @KafkaListener 설정을 모두 제공합니다. ShareConsumerFactory 및 ShareKafkaListenerContainerFactory를 구성해야 합니다. 암시적 및 명시적 승인 모드를 모두 지원합니다. 암시적 승인은 메서드 성공 시 자동으로 수락하고 예외 발생 시 거부하며, 명시적 승인은 ShareAcknowledgment 매개변수를 사용하여 세밀한 제어가 가능합니다. 그러나 명시적 승인을 사용하려면 새로운 레코드를 폴링하기 전에 모든 레코드를 승인해야 합니다. 공유 그룹은 또한 단일 컨테이너 내에서 동시성을 통해 스케일링을 가능하게 하여 여러 소비자 스레드가 레코드를 병렬로 처리할 수 있도록 합니다.