Producent w środowisku python

Tę wersję ćwiczeń można przejść, posiadając nowy obraz Dockerowy i uruchomiony Docker Desktop na własnym komputerze. Jak również na środowisku SGH.

1️⃣ Uruchomienie środowiska

Przejdź do przeglądarki i otwórz stronę ze środowiskiem (w przypadku Dockera otwórz localhost:8888).

Uruchom Jupyter Lab, a następnie otwórz nowy terminal (za pomocą ikony terminala).

2️⃣ Sprawdzenie katalogów i dostępności Kafki

Przejdź do katalogu głównego i wypisz listę wszystkich elementów. Sprawdź, czy na liście znajduje się katalog kafka.

cd ~
ls -la

3️⃣ Sprawdzenie listy topiców

Uruchom polecenie sprawdzające listę topiców serwera Kafki:

kafka/bin/kafka-topics.sh --list --bootstrap-server broker:9092

4️⃣ Dodanie nowego topicu

Dodaj topic o nazwie streaming:

kafka/bin/kafka-topics.sh --bootstrap-server broker:9092 --create --topic streaming

Sprawdź ponownie listę topiców, upewniając się, że streaming został dodany:

kafka/bin/kafka-topics.sh --list --bootstrap-server broker:9092 | grep streaming

5️⃣ Uruchomienie producenta w Pythonie

W nowym terminalu utwórz plik stream.py i wklej poniższy kod:

%%file stream.py
import json
import random
import sys
from datetime import datetime
from time import sleep

from kafka import KafkaProducer

SERVER = "broker:9092"
TOPIC = "streaming"

if __name__ == "__main__":
    
    
    producer = KafkaProducer(
        bootstrap_servers=[SERVER],
        value_serializer=lambda x: json.dumps(x).encode("utf-8")
    )
    
    try:
        while True:
            
            message = {
                "time": str(datetime.now()),
                "id": random.choice(['a','b','c','d']),
                "value": random.randint(0,100)
            }
            producer.send(TOPIC, value=message)
            sleep(1)
    except KeyboardInterrupt:
        producer.close()
Writing stream.py

6️⃣ Uruchomienie konsumenta w konsoli

Aby sprawdzić, czy wysyłanie wiadomości działa, otwórz kolejne okno terminala i uruchom konsumenta:

kafka/bin/kafka-console-consumer.sh --bootstrap-server broker:9092 --topic streaming --from-beginning

Teraz wszystkie wiadomości wysłane przez producenta powinny pojawić się w konsoli konsumenta.

7️⃣ Zakończenie pracy

Pamiętaj, aby uruchamiać komendy z odpowiedniego katalogu. Po zakończeniu ćwiczeń użyj Ctrl+C, aby zatrzymać zarówno producenta, jak i konsumenta.