Принудительное использование уникального идентификатора группы потребителей в Kafka

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

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

Есть ли способ принудительно применить каждое приложение. иметь уникальный идентификатор группы потребителей?


person nikel    schedule 26.02.2016    source источник


Ответы (2)


Kafka - это не реестр имен, но есть много других стратегий, которые вы можете использовать для присвоения уникальных имен групп без координатора:

  • Назовите группу в соответствии с приложением. Каждое из двух приложений получит все данные, поскольку их имена уникальны.
  • Назовите группу на основе хранилища данных, в которое они записывают (например, строка подключения jdbc). Если вы запустите экземпляр приложения для другой базы данных, у него будут собственные смещения.
  • Назовите группу на основе (канонического) имени класса, реализующего потребителя. Если в вашем приложении два потребителя реализованы в разных классах Java, они получат разные groupIds.
  • Назначьте группе случайное значение (например, UUID). При каждом перезапуске будет создана новая группа.
person phaas    schedule 14.08.2016

Нет, это невозможно сделать без изменения исходного кода Kafka, поскольку группа потребителей является основной (и очень ценной) функцией Kafka, которая позволяет избежать использования низкоуровневого потребителя из версии 0.8. когда вы хотите распараллелить потребление одной темы (обычно с разных хостов).

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

person Marko Bonaci    schedule 26.02.2016
comment
думал, что это будет обычная проблема. Кроме того, мне нужен был эффективный автоматизированный способ, а не просто указывать людям что-то использовать ... - person nikel; 26.02.2016
comment
Да, AFAIK ничего подобного не существует, так что это лучшее, что я могу предложить. Не могли бы вы закрыть вопрос, пожалуйста. - person Marko Bonaci; 26.02.2016