LoginSignup
7
2

More than 3 years have passed since last update.

KafkaをローカルのDocker環境で、さくっと動かしてみました  第2回

Last updated at Posted at 2021-02-07

概要

Kafkaに魅せられて、とりあえず手元のマシンで動かしてみましょうか、、、と、インフラしか知らないSEがMacBookProを新たに購入し、Qiita等にアップされている諸先輩方の記事を参考にさせていただき、動作確認したまでの手順を数回に分け記載しています。
なお、Kafkaの概要につきましたは、こちらの記事 を参照ください。

第2回は、第1回で作成したDockerコンテナ環境で Producerからメッセージを送り、Consumerでそのメッセージの受け取りを確認します。
簡単に絵を描くとこんな感じになります。
kafka-2.png

実行環境

macOS Big Sur 11.1
Docker version 20.10.2, build 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

Topicの作成

Producerからメッセージを送り、Consumerでそのメッセージの受け取るために、Topicを作成します。
そのために、broker に接続します。

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

「sample-topic」という topic を作成します。

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

作成された 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:/#

Consumer としてメッセージ受け取りの設定をします。

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

↑ プロンプトが何も表示されない状態ですが、Producerからのメッセージの受け取りを待っています。

Producerからのメッセージ送信

メッセージを送信するために別ターミナルを立ち上げ、cli に接続します。

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

Producer としてメッセージ送信の設定をします。

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 で受け取れることを確認できました。

次回について

次回(第3回)はProducerからIoT疑似データを送り、Consumerでそのデータの受け取りを確認します。

第1回:Kafka基本コンポーネントをローカルのDocker環境で稼働させる
第2回:Kafkaの Producerから送信されたメッセージが Broker を経由して Consumer で受け取れることの確認
第3回:Producer上のPythonプログラムで生成したデータを Broker を経由して Consumer で受け取れることの確認
第4回:Producer上での生成データが topic-01 を経由して KSQL(topic01_stream1 → topic01_stream2) でストリーミング抽出処理されたことの確認
第5回:Producer上での生成データが topic-01 → Ksql → topic-11 を経由して Consumer 上のPythonプログラムで受け取れることの確認
第6回:Producer上での生成データが topic-01 → Ksql → topic-11 を経由して Consumer 上のPythonプログラムによってS3に書き込めることの確認
第7回:2つのProducerコンテナ上で生成したそれぞれのデータが topic-01 → Ksql → topic-11 を経由して Consumer 上のPythonプログラムで受け取れることの確認

参考情報

以下の情報を参考にさせていただきました。感謝申し上げます。
Kafka の Docker のチュートリアル
Kafka からKSQLまで Dockerで簡単環境構築

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2