Консольный продюсер и консьюмер¶
Отправка сообщения в теме Kafka с помощью командной строки
Для создания темы Kafka необходимо указать обязательные параметры:
-
укажите имя хоста и порт Kafka, например, localhost:9092;
-
если Kafka v2.5+, используйте опцию --bootstrap-server;
-
если Kafka более старой версии, используйте опцию --broker-list;
-
укажите обязательные параметры: имя темы;
-
используйте в командной строке команду kafka-console-producer.sh, как показано ниже:
Далее рассмотрим пример по созданию сообщения в консоли.
Убедитесь, что тема first_topic уже создана с 3 разделами и коэффициентом репликации 1:
| kafka-topics.sh --bootstrap-server localhost:9092 --topic first_topic --create --partitions 3 --replication-factor 1 |
|---|
Создайте тему (топик):
Kafka версии 2.5 и выше:
| kafka-console-producer.sh --bootstrap-server localhost:9092 --topic first_topic |
|---|
Kafka версии 2.4 или ниже:
| kafka-console-producer.sh --broker-list localhost:9092 --topic first_topic |
|---|
Чтобы выйти из консольного продюсера Kafka, воспользуйтесь комбинацией клавиш Ctrl+C.
Вывод команды
| > |
|---|
После открытия продюсера вы должны увидеть символ >. После этого любая строка текста, которую вы напишете, будет отправлена в тему Kafka (при нажатии Enter).
| $ kafka-console-producer --bootstrap-server localhost:9092 --topic first_topic >Hello World >My name is Conduktor >I love Kafka >^C (<- Ctrl + C используется для выхода из продюсера) |
|---|
Получение сообщения в топике Kafka с помощью командной строки
Для создания темы Kafka необходимо указать обязательные параметры:
-
найдите имя хоста и порт Kafka, например, localhost:9092;
-
укажите обязательные параметры: имя темы (топика);
-
если вам нужно читать исторические данные, используйте опцию --from-beginning;
-
в противном случае вы будете читать только последующие данные;
-
используйте команду kafka-console-consumer.sh
Важная рекомендация: НЕ используйте опцию `--zookeeper`.
Начиная с Kafka v0.10, потребитель использует строки подключения Kafka, а не Zookeeper. Это связано с тем, как хранятся смещения потребителей. Любые руководства, в которых используется опция --zookeeper, следует считать устаревшими.
Перед тем как создать и отправить данные в тему Kafka, убедитесь, что вы выполнили инструкцию по отправки сообщения в тему Kafka из командной строки, описанную выше.
Получение только последующих сообщений темы Kafka
| kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first_topic |
|---|
Получение всех исторических и последующих сообщений в теме Kafka
| kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first_topic --from-beginning |
|---|
Чтобы выйти из консольного продюсера Kafka, воспользуйтесь комбинацией клавиш Ctrl+C.
Вывод команды
| Hello World My name is Conduktor I love Kafka ^CProcessed a total of 3 messages (<-- при нажатии Ctrl+C для выхода) |
|---|
Консольный потребитель Kafka будет оставаться открытым до тех пор, пока вы не выйдете из него, и продолжит выводить сообщения на экран. Предполагается, что все поступающие сообщения могут быть десериализованы в виде текста (String).
По умолчанию консольный потребитель не показывает ключ или какую-либо информацию о разделе.
Если вы не видите никакого вывода, но знаете, что в теме Kafka есть данные, не забудьте использовать опцию --from-beginning.
Важное замечание по порядку сообщений
Порядок сообщений не общий, а по каждому разделу (партиции). Поскольку топик может быть создан с несколькими разделами, порядок гарантируется только на уровне разделов. Если вы попробуете создать тему только с одним разделом, вы увидите общий порядок.