A lecke teljesítéséhez aktív telepítést kell végrehajtania a gépen a Kafka számára. Olvassa el az Apache Kafka telepítése az Ubuntuban című cikket, hogy megtudja, hogyan kell ezt megtenni.
Python kliens telepítése az Apache Kafka alkalmazáshoz
Mielőtt megkezdhetnénk az Apache Kafka használatát a Python programban, telepítenünk kell az Apache Kafka Python kliensét. Ez megtehető a csipog (Python csomag index). Itt van egy parancs ennek elérésére:
pip3 telepítse a kafka-python-tEz egy gyors telepítés lesz a terminálon:
Python Kafka kliens telepítése PIP használatával
Most, hogy van egy aktív telepítésünk az Apache Kafka-hoz, és telepítettük a Python Kafka klienst is, készen állunk a kódolás megkezdésére.
Producer készítése
Az első dolog, amit üzeneteknek kell közzétennie a Kafkán, egy olyan gyártó alkalmazás, amely üzeneteket küldhet Kafka témáihoz.
Vegye figyelembe, hogy a Kafka-gyártók aszinkron üzenet-gyártók. Ez azt jelenti, hogy az üzenetek Kafka Topic partíción történő közzététele közben végzett műveletek nem blokkolók. A dolgok egyszerűsége érdekében egyszerű JSON kiadót írunk ehhez a leckéhez.
Első lépésként készítsen példányt a Kafka Producer számára:
a kafka importtól KafkaProducerimport json
import pprint
producer = KafkaProducer (
bootstrap_servers = 'localhost: 9092',
value_serializer = lambda v: json.szemétlerakók (v).kódolni ('utf-8'))
A bootstrap_servers attribútum a Kafka szerver gazdagépéről és portjáról tájékoztat. Az value_serializer attribútum csak a felmerült JSON-értékek JSON-sorozatosításának célja.
A Kafka Producerrel való játékhoz próbáljuk meg kinyomtatni a Producer és a Kafka klaszterhez kapcsolódó mutatókat:
metrika = producer.mutatók ()pprint.pprint (metrika)
Most a következőket fogjuk látni:
Kafka Mterics
Most végre próbáljunk meg üzenetet küldeni a Kafka várólistának. Jó példa lesz egy egyszerű JSON-objektum:
termelő.send ('linuxhint', 'topic': 'kafka')A linuxhint az a témapartíció, amelyen a JSON Object továbbításra kerül. A parancsfájl futtatásakor nem kap semmilyen kimenetet, mivel az üzenetet éppen a téma partícióra küldjük. Itt az ideje, hogy írjon egy fogyasztót, hogy tesztelhessük alkalmazásunkat.
Fogyasztó készítése
Most készen állunk egy új kapcsolat létrehozására Consumer alkalmazásként, és az üzenetek megszerzésére a Kafka témáról. Kezdje egy új példány elkészítésével a Fogyasztó számára:
a kafka importtól a KafkaConsumera kafka importból TopicPartition
print ('Kapcsolat létrehozása.')
fogyasztó = KafkaConsumer (bootstrap_servers = 'localhost: 9092')
Most rendeljen hozzá témát ehhez a kapcsolathoz és egy lehetséges offset értéket is.
print ('Téma hozzárendelése.')fogyasztó.hozzárendelés ([TopicPartition ('linuxhint', 2)])
Végül készen állunk az mssage kinyomtatására:
print ('Üzenet beolvasása.')üzenet a fogyasztóban:
nyomtatás ("OFFSET:" + str (üzenet [0]) + "\ t MSG:" + str (message))
Ezen keresztül megkapjuk a Kafka Consumer Topic Partition összes közzétett üzenetének listáját. Ennek a programnak a kimenete a következő lesz:
Kafka Consumer
Gyors áttekintésképpen itt van a teljes Producer szkript:
a kafka importtól KafkaProducerimport json
import pprint
producer = KafkaProducer (
bootstrap_servers = 'localhost: 9092',
value_serializer = lambda v: json.szemétlerakók (v).kódolni ('utf-8'))
termelő.send ('linuxhint', 'topic': 'kafka')
# metrika = producer.mutatók ()
# pprint.pprint (metrika)
És itt van a teljes Consumer program, amelyet használtunk:
a kafka importtól a KafkaConsumera kafka importból TopicPartition
print ('Kapcsolat létrehozása.')
fogyasztó = KafkaConsumer (bootstrap_servers = 'localhost: 9092')
print ('Téma hozzárendelése.')
fogyasztó.hozzárendelés ([TopicPartition ('linuxhint', 2)])
print ('Üzenet beolvasása.')
üzenet a fogyasztóban:
nyomtatás ("OFFSET:" + str (üzenet [0]) + "\ t MSG:" + str (message))
Következtetés
Ebben a leckében megvizsgáltuk, hogyan telepíthetjük és elkezdhetjük használni az Apache Kafka programot a Python programjainkban. Megmutattuk, milyen egyszerű a Kafka-val kapcsolatos egyszerű feladatokat végrehajtani a Pythonban a bemutatott Kafka Client for Python alkalmazással.