Поведение потребителей Кафки

Попытка понять формулировку из документации kafka относительно того, как потребитель получает доступ к сообщению.

http://kafka.apache.org/documentation.html#intro_consumers http://kafka.apache.org/documentation.html#theconsumer

Из того, что я понимаю, если более одного потребителя с одним и тем же сообщением группы потребителей будет доставлено ровно одному потребителю в группе. Мой вопрос здесь о механизме доставки, указанном в строке, - PUSH или PULL? Если это PUSH, что считается доставленным? (Передача семантики) . Если его тянуть, как делает кафка, каждое сообщение читается только одним потребителем (синхронизация между потребителями)? Благодаря!

apache-kafka,kafka-consumer-api,

1

Ответов: 1


0 принят

Если его тянуть, как кафка гарантирует, что каждое сообщение читается только одним потребителем?

Это зависит от того, что вы подразумеваете под «Кафкой». Брокер ничего не проверяет, потому что это модель pull (т. Е. Брокер поставляет данные, которые потребитель запрашивает и не заботится ни о чем другом).

Таким образом, ответственность потребителей заключается в том, чтобы разделить работу. Например, при использовании KafkaConsumerвсе пользовательские экземпляры разговаривают друг с другом через «протокол управления группой» (этот протокол предлагается брокерами, другой клиент не-Java также предлагает возможности управления группами). Это позволяет экземплярам решать, какой из них обрабатывать разделы разделов. Таким образом, каждый раздел присваивается точно одному потребителю. Это в основном «контракт»: потребительские экземпляры говорят друг с другом, и каждый потребитель обещает только потреблять данные из назначенных ему разделов.

Если вы хотите узнать больше, см. Вики Kafka: https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design

апач-Кафка, Кафка-потребитель-апи,