Om deze les te voltooien, moet u een actieve installatie voor Kafka op uw computer hebben. Lees Apache Kafka installeren op Ubuntu om te weten hoe u dit moet doen.
Python-client installeren voor Apache Kafka
Voordat we met Apache Kafka in het Python-programma kunnen gaan werken, moeten we de Python-client voor Apache Kafka installeren. Dit kan met behulp van Pip (Python pakket Index). Hier is een commando om dit te bereiken:
pip3 installeer kafka-pythonDit is een snelle installatie op de terminal:
Python Kafka Client-installatie met PIP
Nu we een actieve installatie voor Apache Kafka hebben en we ook de Python Kafka-client hebben geïnstalleerd, zijn we klaar om te beginnen met coderen.
Een producent maken
Het eerste wat je moet doen om berichten op Kafka te publiceren, is een producer-applicatie die berichten kan sturen naar onderwerpen in Kafka.
Merk op dat Kafka-producenten asynchrone berichtenproducenten zijn. Dit betekent dat de bewerkingen die worden uitgevoerd terwijl een bericht is gepubliceerd op de Kafka Topic-partitie niet-blokkerend zijn. Om het simpel te houden, zullen we voor deze les een eenvoudige JSON-uitgever schrijven.
Maak om te beginnen een instantie voor de Kafka Producer:
van kafka import KafkaProducerimport json
pprint importeren
producent = KafkaProducer(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.stortplaatsen (v).coderen('utf-8'))
Het kenmerk bootstrap_servers informeert over de host en poort voor de Kafka-server. Het kenmerk value_serializer is alleen bedoeld voor JSON-serialisatie van aangetroffen JSON-waarden.
Laten we, om met de Kafka Producer te spelen, proberen de statistieken met betrekking tot de Producer en Kafka-cluster af te drukken:
metrische gegevens = producent.metrische gegevens()pprint.pprint (statistieken)
We zullen nu het volgende zien:
Kafka Mterics
Laten we nu eindelijk proberen een bericht naar de Kafka-wachtrij te sturen. Een eenvoudig JSON-object is een goed voorbeeld:
producent.send('linuxhint', 'topic': 'kafka')De linuxhint is de onderwerppartitie waarop het JSON-object wordt verzonden. Wanneer u het script uitvoert, krijgt u geen uitvoer omdat het bericht zojuist naar de onderwerppartitie is verzonden. Het is tijd om een consument te schrijven zodat we onze applicatie kunnen testen test.
Een consument maken
Nu zijn we klaar om een nieuwe verbinding te maken als consumententoepassing en de berichten van het Kafka-onderwerp te ontvangen. Begin met het maken van een nieuwe instance voor de Consument:
van kafka import KafkaConsumervan kafka import TopicPartition
print('Verbinding maken.')
consument = KafkaConsumer(bootstrap_servers='localhost:9092')
Wijs nu een onderwerp toe aan deze verbinding en ook een mogelijke offset-waarde.
print('Onderwerp toewijzen.')klant.assign([TopicPartition('linuxhint', 2)])
Eindelijk zijn we klaar om het bericht af te drukken:
print('Bericht ontvangen.')voor bericht in consument:
print("OFFSET: " + str(bericht[0])+ "\t MSG: " + str(bericht))
Hierdoor krijgen we een lijst met alle gepubliceerde berichten op de Kafka Consumer Topic Partition. De output voor dit programma zal zijn:
Kafka Consument
Voor een snelle referentie, hier is het volledige Producer-script:
van kafka import KafkaProducerimport json
pprint importeren
producent = KafkaProducer(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.stortplaatsen (v).coderen('utf-8'))
producent.send('linuxhint', 'topic': 'kafka')
# metrische gegevens = producent.metrische gegevens()
# afdruk.pprint (statistieken)
En hier is het volledige consumentenprogramma dat we hebben gebruikt:
van kafka import KafkaConsumervan kafka import TopicPartition
print('Verbinding maken.')
consument = KafkaConsumer(bootstrap_servers='localhost:9092')
print('Onderwerp toewijzen.')
klant.assign([TopicPartition('linuxhint', 2)])
print('Bericht ontvangen.')
voor bericht in consument:
print("OFFSET: " + str(bericht[0])+ "\t MSG: " + str(bericht))
Conclusie
In deze les hebben we gekeken hoe we Apache Kafka kunnen installeren en gebruiken in onze Python-programma's. We hebben laten zien hoe eenvoudig het is om eenvoudige taken met betrekking tot Kafka in Python uit te voeren met de gedemonstreerde Kafka Client voor Python.