我在本地的Docker环境下快速地运行了Kafka。第二篇文章
简而言之
被卡夫卡吸引,一个只懂得基础设施的系统工程师购买了一台新的MacBook Pro,在Qiita等网站上参考了前辈们的文章,按照几个步骤进行了多次验证,向大家分享了一些操作步骤。关于卡夫卡的概要,请参考这篇文章。
运行环境
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進行簡單的環境搭建。