Komme i gang med Apache Kafka og Python

Komme i gang med Apache Kafka og Python
I denne leksjonen vil vi se hvordan vi kan bruke Apache Kafka med Python og lage en prøveapplikasjon ved hjelp av Python -klienten for Apache Kafka.

For å fullføre denne leksjonen, må du ha en aktiv installasjon for Kafka på maskinen din. Les install Apache Kafka på Ubuntu for å vite hvordan du gjør dette.

Installere Python -klient for Apache Kafka

Før vi kan begynne å jobbe med Apache Kafka i Python -programmet, må vi installere Python -klienten for Apache Kafka. Dette kan gjøres ved hjelp av Pip (Python Package Index). Her er en kommando for å oppnå dette:

PIP3 installer Kafka-Python

Dette vil være en rask installasjon på terminalen:

Python Kafka klientinstallasjon ved hjelp av PIP

Nå som vi har en aktiv installasjon for Apache Kafka og vi også har installert Python Kafka -klienten, er vi klare til å begynne å kode.

Lage en produsent

Den første tingen å måtte publisere meldinger på Kafka er en produsentapplikasjon som kan sende meldinger til emner i Kafka.

Merk at Kafka -produsenter er asynkrone meldingsprodusenter. Dette betyr at operasjonene som er utført mens en melding er publisert på Kafka Topic Partition, ikke-blokkering. For å holde ting enkelt, vil vi skrive enkle JSON -utgiver for denne leksjonen.

For å starte, lage en forekomst for Kafka -produsenten:

Fra Kafka import Kafkaproducer
Importer JSON
Importer pprint
Produsent = Kafkaproducer (
bootstrap_servers = 'localhost: 9092',
Value_Serializer = Lambda V: JSON.dumper (v).kode ('UTF-8'))

Attributtet bootstrap_servers informerer om verten og porten for Kafka -serveren. Value_serializer -attributtet er bare for JSON -serialisering av JSON -verdier som oppstår.

For å leke med Kafka -produsenten, la oss prøve å skrive ut beregningene relatert til produsenten og Kafka Cluster:

Metrics = Produsent.METRICS ()
Pprint.PPrint (Metrics)

Vi vil se følgende nå:

Kafka Mterics

La oss endelig prøve å sende litt melding til Kafka -køen. Et enkelt JSON -objekt vil være et godt eksempel:

produsent.Send ('LinuxHint', 'Topic': 'Kafka')

De Linuxhint er emnepartisjonen som JSON -objektet vil bli sendt på. Når du kjører skriptet, får du ikke noen utdata ettersom meldingen nettopp sendes til emnepartisjonen. Det er på tide å skrive en forbruker slik at vi kan teste søknaden vår.

Lage en forbruker

Nå er vi klare til å lage en ny forbindelse som en forbrukerapplikasjon og få meldingene fra Kafka -emnet. Begynn med å lage et nytt forekomst for forbrukeren:

Fra Kafka import Kafkaconsumer
Fra Kafka import emnepartisjon
trykk ('lage forbindelse.')
Forbruker = KafkaConsumer (bootstrap_servers = 'localhost: 9092')

Nå, tilordne et emne til denne forbindelsen og en mulig forskyvningsverdi også.

trykk ('Tilordne emne.')
forbruker.tilordne ([TopicPartition ('Linuxhint', 2)])

Endelig er vi klare til å skrive ut MSSage:

trykk ('Få melding.')
For melding i forbruker:
print ("offset:" + str (melding [0]) + "\ t msg:" + str (melding))

Gjennom dette vil vi få en liste over alle publiserte meldinger på Kafka Consumer Topic Partition. Utgangen for dette programmet vil være:

Kafka forbruker

Bare for en rask referanse, her er det komplette produsentskriptet:

Fra Kafka import Kafkaproducer
Importer JSON
Importer pprint
Produsent = Kafkaproducer (
bootstrap_servers = 'localhost: 9092',
Value_Serializer = Lambda V: JSON.dumper (v).kode ('UTF-8'))
produsent.Send ('LinuxHint', 'Topic': 'Kafka')
# Metrics = Produsent.METRICS ()
# pprint.PPrint (Metrics)

Og her er det komplette forbrukerprogrammet vi brukte:

Fra Kafka import Kafkaconsumer
Fra Kafka import emnepartisjon
trykk ('lage forbindelse.')
Forbruker = KafkaConsumer (bootstrap_servers = 'localhost: 9092')
trykk ('Tilordne emne.')
forbruker.tilordne ([TopicPartition ('Linuxhint', 2)])
trykk ('Få melding.')
For melding i forbruker:
print ("offset:" + str (melding [0]) + "\ t msg:" + str (melding))

Konklusjon

I denne leksjonen så vi på hvordan vi kan installere og begynne å bruke Apache Kafka i Python -programmene våre. Vi viste hvor enkelt det er å utføre enkle oppgaver relatert til Kafka i Python med den demonstrerte Kafka -klienten for Python.