Освоение потребителя консоли Kafka и kafkacat

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

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

  • Все сообщения.
  • Первые N сообщений.
  • Следующие N сообщений.
  • Последние N сообщений.
  • Сообщения между двумя отметками времени.
  • Сообщения между двумя смещениями.

Потребитель консоли Kafka

kafka-console-consumer - это инструмент, который используется для получения сообщений из указанной темы. Обычно он используется для следующих двух целей:

  • Чтобы протестировать или отладить базовое потребление сообщений без необходимости писать потребителя с помощью языка программирования.
  • Для тестирования, отладки и сравнения потребляемых сообщений с написанным вами соответствующим клиентским приложением.

Инструмент командной строки считывает данные из тем Kafka и выводит их на стандартный вывод. Поставляется со следующими опциями:

Что такое кафкачат?

kafkacat - это быстрый и легкий инструмент командной строки, который поставляется с более полным набором утилит по сравнению с kafka-console-consumer и kafka-console-producer. В основном он используется для отладки или тестирования настройки Kafka. В частности, его можно использовать для создания или использования сообщений из тем Kafka и получения метаданных для кластера, определенной темы, раздела или реплики. Чтобы установить kafkacat, все, что вам нужно сделать, это запустить:

Параметры, которые можно передать kafkacat, показаны ниже:

Теперь, когда мы представили потребителя консоли Kafka и kafkacat, пришло время увидеть их в действии.

Как использовать все сообщения

Чтобы использовать все сообщения темы Kafka с помощью потребителя консоли, нам просто нужно передать параметр --from-beginning, чтобы потребитель получал сообщения с самого раннего доступного смещения:

Аналогичная команда для kafkacat также показана ниже. Обратите внимание, что параметр -o (соответствующий смещению) должен быть установлен на beginning:

Как получить первые N сообщений

Чтобы получить первые N сообщений с помощью потребителя консоли Kafka, мы должны предоставить параметры --from-beginning и --max-messages. Предполагая, что нам нужно обработать первые десять сообщений, следующая команда поможет:

Такие же результаты можно получить с kafkacat, как показано ниже. Опять же, нам нужно указать смещение. Кроме того, нам нужно передать счет через параметр -c:

Как использовать следующие N сообщений

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

Эквивалентная команда в kafkacat показана ниже. Поскольку мы хотим получить следующие N сообщений, мы должны опустить параметр смещения (т.е. -o):

Как получить последние N сообщений

Чтобы использовать последние N сообщений, которые уже были созданы, нам нужно указать раздел и конкретное смещение, с которого потребитель начнет получать сообщения. Предполагая, что мы хотим использовать последние сообщения из раздела 1, начиная со смещения 12873, следующее должно помочь. Также обратите внимание, что в этом сценарии мы используем kafka-simple-consumer-shell.sh:

С kafkacat проще получить последние N сообщений из указанной темы и раздела, поскольку нам не нужно явно указывать смещение. Нам просто нужно указать отрицательное смещение. В kafkacat отрицательное смещение -o обозначает относительное смещение от конца. Кроме того, мы предоставляем флаг -e, чтобы потребитель успешно завершил работу, когда будет получено последнее сообщение.

Следующая команда получит последние десять сообщений из раздела с id=1 из темы testTopic:

Как использовать сообщения между двумя отметками времени

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

Чтобы получать сообщения между двумя отметками времени, мы должны предоставить начальную и конечную отметки времени (в мс), как показано ниже:

  • s@.. обозначает начальную метку времени.
  • e@.. обозначает конечную метку времени (не включительно).

Как использовать сообщения между двумя смещениями

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

Предполагая, что мы хотим использовать сообщения между смещениями 11 и 21, нам нужно выполнить следующую команду kafkacat:

-o 11 означает, что потребитель должен начать выборку сообщений со смещения 11, а -c 10 указывает, что нам нужно использовать только первые десять сообщений, начиная со смещения 11.

Заключение

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

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