백엔드 Back-end

Q. kafka에서 group_id를 설정하면 어떻게 될까?

Tap to restart 2022. 4. 11. 23:00
반응형

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 세 인스턴스가 있다고 할 때 셋 중 한 인스턴스가 처리하고 나머지 인스턴스는 같은 처리를 안 해도 되니까.

반응형