카테고리 없음

Kafka를 Queue처럼 사용하는 방법 완벽 정리 (Consumer Group 설정 팁 포함)

idea9329 2025. 5. 28. 13:31
반응형

 

📌 메타 설명 (Meta Description):

Kafka는 기본적으로 Pub-Sub 구조지만, 설정만 바꾸면 Queue처럼 사용할 수 있습니다. 이 글에서는 Kafka를 큐처럼 설정하는 방법, Consumer Group 설정법, 코드 예시까지 상세히 설명합니다.


📖 본문:

Apache Kafka는 일반적으로 발행-구독(Pub-Sub) 구조로 설계된 메시징 시스템입니다. 하지만 많은 개발자들이 Kafka를 Queue 방식, 즉 메시지를 하나씩 분산 처리하는 방식으로 사용하길 원합니다.

이 글에서는 Kafka를 Queue처럼 사용하는 방법을 정리했습니다. 실제 코드를 통해 쉽게 이해할 수 있으며, 실무에서 바로 적용 가능합니다.


✅ Kafka를 Queue처럼 만들기 위한 핵심: Consumer Group

Kafka는 기본적으로 모든 Consumer가 메시지를 다 받는 구조입니다. 그러나 여러 Consumer가 한 메시지를 나눠 처리하도록 하려면, 반드시 같은 Consumer Group ID를 사용해야 합니다.

▶️ 핵심 규칙

  • Consumer Group ID가 같으면 → Queue 방식 (메시지 분산 처리)
  • Consumer Group ID가 다르면 → Pub-Sub 방식 (모두 메시지 수신)

🔧 실전 예제 코드 (Python)

🟢 Producer 예시

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')

for i in range(5):
    msg = f"Message {i}".encode("utf-8")
    producer.send("my-topic", msg)

producer.flush()

🔵 Consumer 예시 (Queue처럼)

from kafka import KafkaConsumer

consumer = KafkaConsumer(
    "my-topic",
    bootstrap_servers="localhost:9092",
    group_id="my-queue-group",  # 모든 Consumer가 동일한 그룹 사용
    auto_offset_reset="earliest",
    enable_auto_commit=True
)

for message in consumer:
    print(f"Consumed: {message.value.decode('utf-8')}")

여러 Consumer를 이 코드로 실행하면, 메시지가 자동으로 분산 처리됩니다.


🛠 추가 팁: Partition 수 조정

Kafka에서 메시지를 제대로 분산하려면 Topic의 Partition 수가 Consumer 수 이상이어야 합니다. Partition은 하나의 Consumer에만 할당되므로, 병렬 처리를 위해 적절히 분산해야 합니다.


📌 요약

목적 설정

Kafka를 Pub-Sub처럼 사용 Consumer Group ID 다르게 설정
Kafka를 Queue처럼 사용 같은 Group ID 사용, Partition 분산 고려

📎 결론

Kafka는 단순한 Pub-Sub 도구가 아닙니다. 적절한 설정만 한다면, Queue처럼 하나의 메시지를 하나의 Consumer가 처리하는 구조로 바꿀 수 있습니다. 실시간 처리 시스템, 마이크로서비스 메시지 브로커 등 다양한 환경에서 유용하게 활용해보세요.

 

 

 

반응형