我在本地的Docker环境下快速地运行了Kafka。第二篇文章

简而言之

被卡夫卡吸引,一个只懂得基础设施的系统工程师购买了一台新的MacBook Pro,在Qiita等网站上参考了前辈们的文章,按照几个步骤进行了多次验证,向大家分享了一些操作步骤。关于卡夫卡的概要,请参考这篇文章。

kafka-2.png

运行环境

macOS Big Sur 11.1
Docker 版本 20.10.2,构建 2291f61
Python 3.8.3

最初的时候

查看正在运行的容器。

$ docker-compose ps

   Name                Command            State               Ports                         
----------------------------------------------------------------------------------------------------------
broker      /etc/confluent/docker/run   Up          0.0.0.0:29092->29092/tcp, 0.0.0.0:9092->9092/tcp      
cli         /bin/sh                     Up          9092/tcp                                              
zookeeper   /etc/confluent/docker/run   Up          2181/tcp, 2888/tcp, 0.0.0.0:32181->32181/tcp, 3888/tcp

创建主题

通过Producer向Consumer发送消息,并创建Topic来接收该消息。为此,连接到broker。

$ docker exec -it broker /bin/bash
root@broker:/#

创建一个名为「sample-topic」的主题。

root@broker:/# kafka-topics --bootstrap-server broker:9092 --create --topic sample-topic --partitions 3 replication-factor 1
Created topic sample-topic.

我会查看已创建的主题。

root@broker:/# kafka-topics --bootstrap-server broker:9092 --describe --topic sample-topic
Topic: sample-topic PartitionCount: 3   ReplicationFactor: 1    Configs: 
    Topic: sample-topic Partition: 0    Leader: 1   Replicas: 1 Isr: 1
    Topic: sample-topic Partition: 1    Leader: 1   Replicas: 1 Isr: 1
    Topic: sample-topic Partition: 2    Leader: 1   Replicas: 1 Isr: 1

在Consumer平台上的消息接收設定。

我要连接到 CLI。

$ docker exec -it cli /bin/bash
root@cli:/#

作为消费者,我将设置接收消息的配置。

root@cli:/# kafka-console-consumer --bootstrap-server broker:29092 --topic sample-topic --group G1 --from-beginning

屏幕上没有显示任何提示,但正在等待接收生产者发送的消息。

向制作人发送一条消息

为了发送消息,打开一个新的终端,并连接到 cli。

$ docker exec -it cli /bin/bash
root@cli:/#

作为制片人,负责发送消息的设置。

root@cli:/# kafka-console-producer --broker-list broker:29092 --topic sample-topic
>

在“>”提示符后,任意输入一条消息。
您输入的消息将显示在Consumer的提示符中。

root@cli:/# kafka-console-producer --broker-list broker:29092 --topic sample-topic
>Hello World
>Good Good Good !!!
>
--------------
root@cli:/# kafka-console-consumer --bootstrap-server broker:29092 --topic sample-topic --group G1 --from-beginning
Hello World
Good Good Good !!!

通过这个,我们可以确认Kafka的基本操作中的Producer发送的消息通过Broker可以被Consumer接收到。

关于下一次

下一次(第三次)将由Producer发送IoT仿真数据,并在Consumer端确认接收该数据。

第1回:在本地的Docker环境中运行Kafka的基本组件
第2回:确认Kafka生产者发送的消息通过代理经过Kafka消费者接收到
第3回:确认在生产者上使用Python程序生成的数据通过代理经过Kafka消费者接收到
第4回:确认在生产者上生成的数据通过topic-01经过KSQL(topic01_stream1 → topic01_stream2)进行流式抽取处理
第5回:确认在生产者上生成的数据通过topic-01 → Ksql → topic-11经过在消费者上的Python程序接收到
第6回:确认在生产者上生成的数据通过topic-01 → Ksql → topic-11经过在消费者上的Python程序写入到S3中
第7回:确认在两个生产者容器上生成的各自数据通过topic-01 → Ksql → topic-11经过消费者上的Python程序接收到

参考资料

我們參考了以下的信息。非常感謝。
Kafka的Docker教程
從Kafka到KSQL,使用Docker進行簡單的環境搭建。

广告
将在 10 秒后关闭
bannerAds