Bis ich versuche, Apache Kafka mit Docker-Image auszuführen

1. Zuallererst

Apache Kafka ist eine hoch skalierbare Warteschlange für verteilte Nachrichten. Eine Nachrichtenwarteschlange ist eine Middleware, die die Datenübertragung zwischen Systemen vermittelt und die Daten vorübergehend hält (in die Warteschlange stellt).

Dieses Mal werden wir das Docker-Image von Apache kafka verwenden und kafka in der lokalen Umgebung ausführen. Die verwendete Version von Apache kafka ist 2.6.0.

2. Referenz (Ausführungsumgebung)

2-1. Docker ist installiert
$ docker -v
Docker version 19.03.6, build 369ce74a3c
2-2. Technische Daten

Ich habe eine Maschine mit insgesamt 8 GB Speicher verwendet, aber sie funktioniert auch mit etwa 4 GB einwandfrei.

$ cat /etc/issue
Ubuntu 18.04.2 LTS
$ cat /proc/meminfo | grep Mem
MemTotal:        8168284 kB
MemFree:         5540948 kB
MemAvailable:    7472660 kB

3. Container erstellen / starten

Viele kafka Docker-Images sind auf dem Docker-Hub verfügbar. Dieses Mal verwende ich das hier vorbereitete Docker-Image.

$ docker run --name my-kafka blueskyareahm/kafka:2.6.0

Der Container wird gestartet, nachdem das Image heruntergeladen wurde (siehe unten).

Unable to find image 'blueskyareahm/kafka:2.6.0' locally
2.6.0: Pulling from blueskyareahm/kafka
75f829a71a1c: Already exists 
455e7974a143: Pull complete 
a439c4ff44d0: Pull complete 
b9eb8968940e: Pull complete 
e6979812c85a: Pull complete 
7812677cc867: Pull complete 
ceacbc38a4c6: Pull complete 
70319b3a888f: Pull complete 
3fb4c3130215: Pull complete 
68dc00f6ba7c: Pull complete 
Digest: sha256:802f5d87bfb51fd5af66853a345e0ed65de8acc2f3fd61c259def2d6c05f63d6
Status: Downloaded newer image for blueskyareahm/kafka:2.6.0
/usr/lib/python2.7/site-packages/supervisor-4.2.1-py2.7.egg/supervisor/options.py:474: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
  'Supervisord is running as root and it is searching '
2020-10-17 04:52:25,057 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2020-10-17 04:52:25,068 INFO RPC interface 'supervisor' initialized
2020-10-17 04:52:25,069 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2020-10-17 04:52:25,069 INFO supervisord started with pid 1
2020-10-17 04:52:26,076 INFO spawned: 'zookeeper' with pid 9
2020-10-17 04:52:26,082 INFO spawned: 'kafka' with pid 10
2020-10-17 04:52:27,091 INFO success: zookeeper entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-10-17 04:52:27,091 INFO success: kafka entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

4. Kafka-Thema erstellen

Öffnen Sie eine andere Konsole und führen Sie den folgenden Befehl aus: Dieser Befehl erstellt ein Kafka-Thema. (Hier heißt der Name "topic1") Kafka tauscht Nachrichten über das Thema aus.

$ docker exec -it my-kafka /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic1

Wenn die folgende Meldung angezeigt wird, ist sie in Ordnung.

Created topic topic1.

5. Start von Kafka Producer

Führen Sie den folgenden Befehl aus. Dieser Befehl startet Kafka Producer. Es ist bereit, Nachrichten interaktiv zu akzeptieren, wie unten gezeigt.

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic1
>

6. Starten Sie Kafka Consumer

Öffnen Sie eine andere Konsole und führen Sie den folgenden Befehl aus: Dieser Befehl startet Kafka Consumer. Wenn ich es ausführe, wird nichts angezeigt, aber es ist bereit, Nachrichten anzunehmen.

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic1

7. Versuchen Sie, eine Nachricht von Kafka Producer zu senden

Kehren Sie zur Konsole zurück, auf der Kafka Producer ausgeführt wird, und geben Sie eine Nachricht ein.

Produzentenseite

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic1
>Hello Kafka!
>

Anschließend wird dieselbe Meldung wie auf der Kafka-Verbraucherseite angezeigt. Verbraucherseite

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic1
Hello Kafka!

Recommended Posts

Bis ich versuche, Apache Kafka mit Docker-Image auszuführen
Versuchen Sie, den Cloudera Manager mit Docker auszuführen
Starten Sie Apache mit dem PHP-Apache-Image des Dockers neu
Bis Sie Apache mit Ubuntu auf Docker ausführen
Greifen Sie mit Micronaut auf Apache Kafka zu
Bis Sie Quarkus ausführen und Docker-Image auf Amazon ECS ausführen
docker-compose.yml, wenn Sie MySQL auf Docker laufen lassen möchten
[GCP] Bis Sie das lokale Docker-Image in die Container-Registrierung verschieben
[Linux] Starten Sie den Apache-Container mit Docker
Versuchen Sie, MySql und Blazor mit Docker-Compose auszuführen
Proxyserver durch Tintenfisch mit Docker-Image
Bildposting mit [Docker + WordPress + MySQL] zulassen
Das Bild flog beim Aktualisieren von Docker mit WSL2
Versuchen Sie, Express + PostgreSQL + Sequelize mit Docker zu erstellen [Teil 2]
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Lassen Sie einen Docker-Container laufen, ohne dass residente Prozesse ausgeführt werden
So geben Sie jemandem Ihr Image mit Docker
Aktualisieren Sie das Container-Image mit KUSANAGI Runs on Docker
Bis Sie den Apache Velocity-Beispielcode ausführen
Versuchen Sie, Express + PostgreSQL + Sequelize mit Docker zu erstellen [Teil 1]
Starten Sie das Docker-Image mit den Anfangsdaten, die mit Docker-Compose eingefügt wurden
Versuchen Sie, einen anderen Servlet-Container-Steg mit Docker zu verwenden