Потребитель Кафки в режиме публикации / подписки - PullRequest
0 голосов
/ 13 мая 2018

Мне нужно позвонить потребителю Kafka в режиме публикации / подписки 1000 раз. Насколько я знаю, для работы kafka в режиме публикации / подписки мне нужно дать новый идентификатор группы каждому потребителю (props.put ("group.id", String.valueOf (Instant.now (). ToEpochMilli ())) ;). Но когда я делаю это, если два потребительских потока обращаются к потребителю в одну и ту же миллисекунду, возникают проблемы. Как решить эту проблему?

1 Ответ

0 голосов
/ 13 мая 2018

Если вы хотите распространять сообщения среди потребителей, вам нужно использовать тот же group.id. Если у вас есть 1000 сообщений и 1000 потребителей, то каждый из них обычно потребляет одно сообщение.

С другой стороны, если вы хотите, чтобы каждый потребитель принимал все сообщения из тем, вам нужно использовать другой group.id, чтобы сообщения в теме использовались всеми потребителями. Если у вас огромное количество потребителей, вы можете использовать UUID.randomUUID().toString(), чтобы получить отдельную group.id для каждого.

Согласно документам :

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...