Как читать сообщения от группы потребителей kafka без потребления?

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

4 ответа

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

Хороший прокси для получения "всех сообщений, которые не были прочитаны" - это сравнение последнего зафиксированного смещения со смещением максимальной отметки на раздел. Это обеспечивает понятие "отставание", которое указывает, насколько далеко отстает данный потребитель в своем потреблении раздела. fetch_consumer_lag Функция CLI в pykafka является хорошим примером того, как это сделать.

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

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

Кафка теперь имеет KStream.peek() метод

Смотрите предложение "Добавить метод просмотра KStream".

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

Смотрите также:

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

Другие вопросы по тегам