반응형
A. group id가 같을 경우 한 클라이언트에서만 메시지를 소비(consume)할 수 있다.
테스트를 위한 코드: python kafka - producer and consumer
아래처럼 group_id를 설정한 경우에 consumer를 터미널 창을 두 개 띄워서 테스트할 경우 한쪽에서만 메시지를 받을 수 있다.
import kafka
consumer = kafka.KafkaConsumer(bootstrap_servers='localhost:9092', group_id='test-group')
consumer.subscribe(topics=['quickstart-events'])
for msg in consumer:
print(msg)
group_id를 설정하지 않은 경우에는 양쪽에 같은 메시지가 온다.
import kafka
consumer = kafka.KafkaConsumer(bootstrap_servers='localhost:9092')
consumer.subscribe(topics=['quickstart-events'])
for msg in consumer:
print(msg)
웹서버를 한 개의 인스턴스가 아니라, 여러 개 인스턴스를 실행하고, 한번만 consume하면 되는 경우라면? 당연히 group_id를 지정해주는 게 좋다. A, B, C 세 인스턴스가 있다고 할 때 셋 중 한 인스턴스가 처리하고 나머지 인스턴스는 같은 처리를 안 해도 되니까.
반응형