Post

Consumer 생성하기

Consumer 생성하기 주제의 핵심 개념과 적용 포인트를 정리합니다.

Consumer 생성하기

Consumer 생성 기본

Consumer는 다음과 같이 설정 객체를 구성한 뒤 생성한다.

1
2
3
4
5
6
7
kafkaProps.put("group.id", groupId);
kafkaProps.put("bootstrap.servers", servers);
kafkaProps.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
kafkaProps.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
kafkaProps.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);

KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(kafkaProps);

Producer와 비슷해 보이지만, Consumer는 “어디까지 읽었는가”를 관리해야 하므로 그룹/오프셋 설정 의미가 더 크다.

주요 설정 포인트

  • group.id
    • 동일 그룹 내 Consumer들이 파티션을 분담한다.
  • key.deserializer, value.deserializer
    • Producer의 직렬화 포맷과 정확히 맞아야 역직렬화 실패를 피할 수 있다.
  • enable.auto.commit
    • 자동 커밋 여부를 결정한다. 정합성이 중요하면 수동 커밋을 검토한다.

토픽 구독 방법

1
2
consumer.subscribe(Collections.singletonList("customerCountries"));
consumer.subscribe(Pattern.compile("test.*"));
  • 명시적 토픽 목록 구독
  • 정규식 패턴 구독

패턴 구독은 운영 편의성이 높지만, 대규모 토픽 환경에서는 메타데이터 조회 비용이 커질 수 있다.

실무 포인트

  • 구독 대상 토픽이 많아질수록 리밸런스 영향 범위도 함께 커진다.
  • 특히 정규식 기반 대규모 구독은 브로커/클라이언트/네트워크에 추가 부담을 줄 수 있으므로 모니터링이 필요하다.
This post is licensed under CC BY 4.0 by the author.