1

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

например, >> reading message #1234 of 5678 total in partition 0 of topic foo

я неправильно цель RdKafka::Consumer->outq_len() и RdKafka::Topic->OFFSET_END, потому что они кажутся всегда равна 0 и -1, соответственно.

Как я могу получить значение 5678 моего примера?

ответ

2

Чтобы получить представление о запасе вашего потребителя, вам необходимо подписаться на статистику librdkafka. Зарегистрировать класс Event обратного вызова и называют poll() регулярно входят в вашей ручке, проверьте EVENT_STATS, а затем разобрать соответствующий JSON сообщение и искать lo_offset, hi_offset и consumer_lag.

+0

Не работает для меня. Я попытался использовать статистические данные для отслеживания задержки с использованием .NET-оболочки для rdkafka (RdKafka), но он возвращает некоторые значения wierd lag. Например, я настроил обратный вызов на огонь каждые 30 секунд. Вначале он возвращает достоверные значения, но каждый раз, когда они уменьшаются, и продолжается до тех пор, пока они не достигнут нуля. В то же время я знаю, что ничто не поглощает темы, а инструменты системы Kafka показывают мне реальные ценности. – greatvovan