Kafka를 Queue처럼 사용하는 방법 완벽 정리 (Consumer Group 설정 팁 포함)
📌 메타 설명 (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가 처리하는 구조로 바꿀 수 있습니다. 실시간 처리 시스템, 마이크로서비스 메시지 브로커 등 다양한 환경에서 유용하게 활용해보세요.