Освоение потребителя консоли 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. Он предлагает более широкие возможности в более простой форме, и я настоятельно рекомендую людям использовать этот инструмент.