Концепция разделов и (потребительских) групп в Kafka была введена для реализации параллелизма. Я работаю с Кафкой через Python. У меня есть некая тема, имеющая (скажем) 2 раздела. Это означает, что если я создам группу потребителей с двумя потребителями в ней, они будут сопоставлены (подписаны) на разные разделы.
Но, используя библиотеку kafka в Python, я столкнулся со странной проблемой. Я запустил двух потребителей с одинаковыми идентификаторами групп и запустил потоки для обработки ими сообщений.
Но каждое сообщение в потоке kafka потребляется ими обоими !! Мне это кажется смешным и даже концептуально неверным. Могу ли я каким-либо образом сопоставить потребителей с определенными (отдельными) разделами вручную (если они не сопоставляются с разными разделами автоматически)?
Вот код:
Код: Выделить всё
from kafka import KafkaConsumer
import thread
def con1(consumer):
for msg in consumer:
print msg
consumer1 = KafkaConsumer('k-test', group_id='grp1', bootstrap_servers=['10.50.23.120:9092'])
consumer2 = KafkaConsumer('k-test', group_id='grp1', bootstrap_servers=['10.50.23.120:9092'])
thread.start_new_thread(con1, (consumer1,))
thread.start_new_thread(con1, (consumer2,))
Код: Выделить всё
ConsumerRecord(topic=u'k-test', partition=0, offset=47, timestamp=None, timestamp_type=None, key=None, value='polki')
ConsumerRecord(topic=u'k-test', partition=0, offset=47, timestamp=None, timestamp_type=None, key=None, value='polki')
ConsumerRecord(topic=u'k-test', partition=0, offset=48, timestamp=None, timestamp_type=None, key=None, value='qwewrg')
ConsumerRecord(topic=u'k-test', partition=0, offset=48, timestamp=None, timestamp_type=None, key=None, value='qwewrg')
ConsumerRecord(topic=u'k-test', partition=0, offset=49, timestamp=None, timestamp_type=None, key=None, value='shgjas')
ConsumerRecord(topic=u'k-test', partition=0, offset=49, timestamp=None, timestamp_type=None, key=None, value='shgjas')
Подробнее здесь: https://stackoverflow.com/questions/383 ... p-id-issue