开始使用Kafka

本译文自 Jean-Paul Azar发表在https://dzone.comGetting Started With Kafka,文中版权、图像代码等数据均归作者所有。为了本土化,翻译内容略作修改。

使用Kafka命令行了解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

Kafka依靠ZooKeeper。 为了简单起见,我们将使用一个ZooKeeper节点。

Kafka为ZooKeeper提供了一个名为zookeeper-server-start.sh的启动脚本,位于〜/ kafka-training / kafka / bin / zookeeper-server-start.sh

Kafka发行版还提供了一个ZooKeeper配置文件,它被设置为运行单个节点。

为了运行ZooKeeper,我们在kafka-training中创建这个脚本并运行它。

~/kafka-training/run-zookeeper.sh

#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/zookeeper-server-start.sh \
   kafka/config/zookeeper.properties

Run run-zookeeper.sh

~/kafka-training
$ ./run-zookeeper.sh

等待大约30秒左右,ZooKeeper就可以启动。

运行Kafka服务器

Kafka还为位于〜/ kafka-training / kafka / bin / kafka-server-start.sh的Kafka服务器提供了一个名为kafka-server-start.sh启动脚本

Kafka发行版还提供了一个Kafka配置文件,该文件被设置为运行Kafka单节点,并指向在localhost:2181上运行的ZooKeeper。

为了运行Kafka,我们在kafka-training中创建了这个脚本,并在另一个终端窗口中运行它。

~/kafka-training/run-kafka.sh

#!/usr/bin/env bash
cd ~/kafka-training
kafka/bin/kafka-server-start.sh \
    kafka/config/server.properties

Run run-kafka.sh

~/kafka-training
$ ./run-kafka.sh

等待Kafka启动大约30秒左右。

现在让我们创建我们将发送记录的主题。

创建Kafka主题

Kafka还提供一个实用程序来处理位于〜/ kafka-training / kafka / bin / kafka-topics.sh的主题kafka-topics.sh

我们将使用此工具创建一个名为my-topic的主题,复制因子为1,因为我们只有一个服务器。 我们将使用十三个分区作为我的主题,这意味着我们可以有多达13个Kafka消费者。

要运行Kafka,请在kafka-training \ lab1中创建此脚本,并在另一个终端窗口中运行它。

~/kafka-training/lab1/create-topic.sh

#!/usr/bin/env bash
cd ~/kafka-training
# 创建一个主题
kafka/bin/kafka-topics.sh --create \
  --zookeeper localhost:2181 \
  --replication-factor 1 --partitions 13 \
  --topic my-topic

Run create-topic.sh

~/kafka-training/lab1
$ ./create-topic.sh
Created topic "my-topic".

注意我们创建一个名称为my-topic的主题

列出主题

您可以看到Kafka使用kafka-topics.sh管理哪些主题,如下所示。

〜/ kafka-training / lab1 / list-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集群。

运行 list-topics.sh

~/kafka-training/lab1
$ ./list-topics.sh
__consumer_offsets
_schemas
my-example-topic
my-example-topic2
my-topic
new-employees

你可以看到主题my-topic在主题列表中。

运行Kafka Producer控制台

Kafka发行版提供了一个命令实用程序来从命令行发送消息。它启动一个终端窗口,您输入的所有内容都会发送到Kafka主题。

Kafka提供了一个实用程序 kafka-console-producer.sh~/kafka-training/kafka/bin/kafka-console-producer.sh 用于将消息发送到命令行上的主题。

创建文件 ~/kafka-training/lab1/start-producer-console.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

运行 start-producer-console.sh 然后发送至少四条信息

~/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提供了kafka-console-consumer.sh 位于在 ~/kafka-training/kafka/bin/kafka-console-producer.sh 命令行上接收来自主题的消息的实用程序 。

创建文件 ~/kafka-training/lab1/start-consumer-console.sh 并运行它。

~/kafka-training/lab1/start-producer-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

在另一个终端中运行start-consumer-console.sh

~/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个分区的消息。订单只保证在一个分区内。

从命令行回顾使用Kafka

你先运行什么服务器?

你需要运行ZooKeeper比Kafka。

你用什么工具创建主题?

kafka-topics.sh

你用什么工具看题目?

kafka-topics.sh

我们用什么工具在命令行上发送消息?

kafka-console-producer.sh

我们用什么工具查看主题中的信息?

kafka-console-consumer.sh

为什么这些信息是不符合规定的?

消息在13个分区之间被分割。

我们怎么能从消费者那里得到消息?

我们只能使用一个分区或启动13个消费者。

原文链接:https://dzone.com/articles/getting-started-with-kafka-tutorial

原文作者:Jean-Paul Azar

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏十月梦想

通过post向mysql插入数据

        前面简单介绍了php操作mysql的方法,接下来通过post的方式获取的数据插入mysql!

873
来自专栏hotqin888的专栏

ONLYOFFICE在Windows上部署,实现实时文档协作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1902
来自专栏小夜博客

Nginx combined 日志参数记录

38210
来自专栏木头编程 - moTzxx

oracle 10g(服务端+客户端,支持win7、win8) 资源分享

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

1933
来自专栏DannyHoo的专栏

Xcode中将图片放到images.xcassets中的好处

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1052
来自专栏小二的折腾日记

服务器-Nginx的事件驱动模型

事件驱动概念:在持续的事物管理过程中,由当前时间节点上出现的事件引起的调用可用资源执行相关任务,解决问题,防止事物堆积的一种策略。 一般由:事件收集器、事件发送...

914
来自专栏xingoo, 一个梦想做发明家的程序员

汇编语言 手记9

使用汇编语言编译程序(MASM.EXE)对源程序文件中的源程序进行编译,产生目标文件 用连接程序(LINK.EXE)对目标文件进行连接,生成可在操作系统中直接运...

1928
来自专栏用户2442861的专栏

./configure,make,make install的作用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details...

1763
来自专栏Linux运维学习之路

day9、用户登陆出现-bash-4.1$错误的原因及解决方法

原因:用户家目录里面与环境变量有关的文件被删除所导致的 下面两个文件被删除导致的 .bash_profile .bashrc 解决方法:从/etc/skel把丢...

1898
来自专栏流媒体人生

lib库转dll库

假如你有从源文件编译好的静态库lib,你希望从这个lib生成对应的dll,你需要一个def文件里面定义导出的符号,这些符号的定义在那个静态库里,你要生成dll了...

722

扫码关注云+社区