2015-10-22 3 views
0

У меня есть тема Kafka, которая в настоящее время имеет 3 раздела. Я хочу, чтобы мои потребители читали один и тот же раздел, но каждое сообщение должно обращаться к другому потребителю круговым способом. Можно ли это достичь?Kafka распространяет сообщения из раздела среди потребителей

+1

Вы имеете в виду сообщение 1 should go to consumer 1, message 2 to consumer 2, message 3 to consumer 3? Это невозможно. – serejja

+0

Да, это именно то, что я имел в виду. – Hubble

ответ

0

Для этого вам необходимо реализовать группу потребителей. Он поставляется с коробкой с Кафкой. Вы должны указать только тот же group.id, что и ваш потребитель дерева.

[edit] Но каждый потребитель будет читать в другом разделе Kafka. Я думаю, что сделать разницу потребителем для одной и той же группы, прочитанной в том же разделе, невозможно, если вы используете только API Kafka.

Подробнее в документации: http://kafka.apache.org/documentation.html#intro_consumers

+1

Это не позволит нескольким потребителям потреблять один раздел – serejja

+1

В этом случае каждый раздел переходит к одному потребителю в пределах одной и той же группы потребителей. – leshkin

+0

В этом случае, я думаю, что Кафка для этого не делается. –

0

Как об этом, на производителя, сообщения направляются на основе какой-то ключ. Можно отправить сообщение 1 в раздел 1, сообщение 2 в раздел 2, сообщение 3 в раздел 3. Затем вы должны сгруппировать трех пользователей в одну группу. Можно заставить потребителя 1 потреблять раздел 1, потребитель 2 потреблять раздел 2, потребитель 3 потреблять раздел 3.

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

0

Что вы говорите, поражает назначение разделов. Разделы не предназначены для простой балансировки нагрузки в кафке. Если вы действительно этого хотите, у вас есть два варианта.

  1. Если у вас есть контроль над производителем, производящим эту тему, сделайте простое разделение хеша mod 3. Таким образом, сообщения будут распределены одинаково в 3 разделах. Теперь каждый из ваших потребителей будет потреблять из одного раздела. Это означает, что каждое третье сообщение читается каждым потребителем. Это решает вашу проблему.
  2. Если вы не можете контролировать производителя, используйте его в обычном режиме. Напишите продюсера с простым разделением хешей mod 3 и создайте его для новой темы. Снова поглотите эту тему. То же самое повторяется, как и в первом случае.