本译文自 Jean-Paul Azar发表在https://dzone.com的 Getting Started With Kafka,文中版权、图像代码等数据均归作者所有。为了本土化,翻译内容略作修改。
我们来看一个使用Kafka命令行的生产者和消费者的简单例子。
从Kafka下载页面下载Kafka 0.10.2.x。 后来的版本可能会工作,但是这个例子是用0.10.2.x完成的。
我们假设你已经安装了Java SDK 1.8.x。
我们将Kafka下载文件解压缩到〜/ kafka-training /
中,然后将Kafka安装文件夹重命名为kafka
。请跟着一起做。
接下来,我们将运行ZooKeeper,然后运行Kafka Server / Broker。 我们将使用一些Kafka命令行实用程序来创建Kafka主题,通过生产者发送消息并从命令行使用消息。
Kafka依靠ZooKeeper。 为了简单起见,我们将使用一个ZooKeeper节点。
Kafka为ZooKeeper提供了一个名为zookeeper-server-start.sh
的启动脚本,位于〜/ kafka-training / kafka / bin / zookeeper-server-start.sh
。
Kafka发行版还提供了一个ZooKeeper配置文件,它被设置为运行单个节点。
为了运行ZooKeeper,我们在kafka-training
中创建这个脚本并运行它。
#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/zookeeper-server-start.sh \
kafka/config/zookeeper.properties
~/kafka-training
$ ./run-zookeeper.sh
等待大约30秒左右,ZooKeeper就可以启动。
Kafka还为位于〜/ kafka-training / kafka / bin / kafka-server-start.sh
的Kafka服务器提供了一个名为kafka-server-start.sh
的启动脚本。
Kafka发行版还提供了一个Kafka配置文件,该文件被设置为运行Kafka单节点,并指向在localhost:2181
上运行的ZooKeeper。
为了运行Kafka,我们在kafka-training
中创建了这个脚本,并在另一个终端窗口中运行它。
#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/kafka-server-start.sh \
kafka/config/server.properties
~/kafka-training
$ ./run-kafka.sh
等待Kafka启动大约30秒左右。
现在让我们创建我们将发送记录的主题。
Kafka还提供一个实用程序来处理位于〜/ kafka-training / kafka / bin / kafka-topics.sh
的主题kafka-topics.sh
。
我们将使用此工具创建一个名为my-topic
的主题,复制因子为1,因为我们只有一个服务器。 我们将使用十三个分区作为我的主题,这意味着我们可以有多达13个Kafka消费者。
要运行Kafka,请在kafka-training \ lab1
中创建此脚本,并在另一个终端窗口中运行它。
#!/usr/bin/env bash
cd ~/kafka-training
# 创建一个主题
kafka/bin/kafka-topics.sh --create \
--zookeeper localhost:2181 \
--replication-factor 1 --partitions 13 \
--topic my-topic
~/kafka-training/lab1
$ ./create-topic.sh
Created topic "my-topic".
注意我们创建一个名称为my-topic
的主题
您可以看到Kafka使用kafka-topics.sh
管理哪些主题,如下所示。
在〜/ kafka-training / lab1 / list-topics.sh
中创建文件。 并运行它。
#!/usr/bin/env bash
cd ~/kafka-training
# 列出现有的主题
kafka/bin/kafka-topics.sh --list \
--zookeeper localhost:2181
请注意,我们必须指定在本地端口2181上运行ZooKeeper集群。
~/kafka-training/lab1
$ ./list-topics.sh
__consumer_offsets
_schemas
my-example-topic
my-example-topic2
my-topic
new-employees
你可以看到主题my-topic
在主题列表中。
Kafka发行版提供了一个命令实用程序来从命令行发送消息。它启动一个终端窗口,您输入的所有内容都会发送到Kafka主题。
Kafka提供了一个实用程序 kafka-console-producer.sh
, ~/kafka-training/kafka/bin/kafka-console-producer.sh
用于将消息发送到命令行上的主题。
创建文件 ~/kafka-training/lab1/start-producer-console.sh
并运行它。
#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic my-topic
请注意我们指定了正在运行Kafka的节点为localhost:9092
。
~/kafka-training/lab1
$ ./start-producer-console.sh
This is message 1
This is message 2
This is message 3
Message 4
Message 5
为了看到这些信息,我们需要运行消费者控制台。
Kafka发行版提供了一个命令实用程序来查看来自命令行的消息。它以各种模式显示消息。
Kafka提供了kafka-console-consumer.sh
位于在 ~/kafka-training/kafka/bin/kafka-console-producer.sh
命令行上接收来自主题的消息的实用程序 。
创建文件 ~/kafka-training/lab1/start-consumer-console.sh
并运行它。
#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic my-topic \
--from-beginning
请注意,我们指定了localhost:9092
像之前一样运行的Kafka节点 ,但是我们也指定my-topic
从头开始 读取所有消息 --from-beginning
。
~/kafka-training/lab1
$ ./start-consumer-console.sh
Message 4
This is message 2
This is message 1
This is message 3
bash
Message 5
Message 6
Message 7
请注意,这些消息不是按顺序排列的。这是因为我们只有一个用户,所以它正在读取所有13个分区的消息。订单只保证在一个分区内。
你需要运行ZooKeeper比Kafka。
kafka-topics.sh
kafka-topics.sh
kafka-console-producer.sh
kafka-console-consumer.sh
消息在13个分区之间被分割。
我们只能使用一个分区或启动13个消费者。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。