Разрешить потребление одного и того же сообщения разными потребителями из темы Кафки - PullRequest
0 голосов
/ 14 сентября 2018

У меня 3 потребителя подписались на тему Кафки. Производитель публикует 1 сообщение в теме.

Как я могу убедиться, что сообщение реплицируется внутри Kafka и затем используется всеми 3 потребителями?

Одним из способов было бы не фиксировать сообщение, но тогда сообщения будут продолжать накапливаться в теме.

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Кафка никогда не копирует сообщения. Сообщение всегда будет перенаправлено в тему / раздел только один раз.

Но Кафка использует концепцию групп потребителей, чтобы различать разные группы потребителей и решать, как они должны получать сообщения. В вашем случае вы должны назначить разные идентификаторы групп потребителей для каждого из этих потребителей. И как только вы это сделаете, они начнут получать сообщения параллельно .

Кроме того, сообщения в Kafka никогда не удаляются после того, как потребитель их использует. Они будут храниться в теме / разделе до тех пор, пока не достигнут предельного срока хранения, который может быть основан либо на времени (например, хранить сообщения в течение одной недели), либо, например, на размере темы (держать сообщения до 100 ГБ).

0 голосов
/ 14 сентября 2018

Вы должны установить 3 разных группы потребителей (с разными идентификаторами) для 3 потребителей.

Потребители помечают себя именем группы потребителей, и каждая запись публикуется вТема доставляется одному экземпляру потребителя в каждой подписавшейся группе потребителей.Экземпляры-потребители могут находиться в отдельных процессах или на разных компьютерах.

Если все экземпляры-потребители имеют одну и ту же группу потребителей, тогда записи будут эффективно сбалансированы по нагрузке по экземплярам-потребителям.

Если всеэкземпляры потребителей имеют разные группы потребителей, тогда каждая запись будет транслироваться всем процессам потребителей.

из https://kafka.apache.org/documentation/

0 голосов
/ 14 сентября 2018

Единственное, что вам нужно сделать, - это назначить разные групповые идентификаторы каждому потребителю

...