2015-09-16 8 views
0

Я тестирую, как Kafka работает на нескольких потребителях с высокоуровневой Java APIS.Как отправить сообщение Kafka нескольким потребителям

Создана 1 тема с 5 разделами, 1 производителем и 2 потребителями (C1, C2). У каждого потребителя будет только один поток, а partition.assignment.strategy - range.

C1 Старт, претензии касательно все раздел. Затем начнется C2, ZK вызовет перебалансировку. После этого C1 будет требовать (0, 1, 2), C2 будет требовать (3, 4). Он хорошо работает сейчас.

Затем я проверю сообщения, полученные C1, надеюсь, что сообщения будут только из разделов (0, 1, 2). Но в моем файле журнала я могу найти сообщение со всех разделов, и это произошло и в C2. Он просто так partition.assignment.strategy установлен на roundrobin. Это как сообщение отправки Кафки. Или это должна быть какая-то ошибка?

+0

C1, C2 имеющий отдельную группу id? – user2720864

ответ

0

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

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

Существует также теория, что если у вас есть большее количество потребителей по сравнению с количеством разделов на тему, то есть вероятность того, что некоторые из Consumer никогда не получает каких-либо данных.

Смежные вопросы