Per completare questa lezione, devi avere un'installazione attiva per Kafka sulla tua macchina. Leggi Installa Apache Kafka su Ubuntu per sapere come farlo.
Installazione del client Python per Apache Kafka
Prima di poter iniziare a lavorare con Apache Kafka nel programma Python, è necessario installare il client Python per Apache Kafka. Questo può essere fatto usando pip (Indice del pacchetto Python). Ecco un comando per ottenere questo:
pip3 installa kafka-pythonQuesta sarà una rapida installazione sul terminale:
Installazione del client Python Kafka tramite PIP
Ora che abbiamo un'installazione attiva per Apache Kafka e abbiamo anche installato il client Python Kafka, siamo pronti per iniziare a codificare.
Fare un produttore
La prima cosa da dover pubblicare messaggi su Kafka è un'applicazione producer che può inviare messaggi agli argomenti in Kafka.
Nota che i produttori di Kafka sono produttori di messaggi asincroni. Ciò significa che le operazioni eseguite mentre un messaggio è pubblicato sulla partizione Kafka Topic non sono bloccanti. Per semplificare le cose, scriveremo un semplice editore JSON per questa lezione.
Per iniziare, crea un'istanza per il produttore Kafka:
da kafka import KafkaProducerimport json
importa stampa
produttore = KafkaProduttore(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.discariche (v).codifica('utf-8'))
L'attributo bootstrap_servers informa sull'host e la porta per il server Kafka. L'attributo value_serializer è solo ai fini della serializzazione JSON dei valori JSON incontrati.
Per giocare con il Producer Kafka, proviamo a stampare le metriche relative al Producer e al cluster Kafka:
metriche = produttore.metrica()pprint.pprint(metriche)
Vedremo quanto segue ora:
Kafka Mterica
Ora, finalmente proviamo a inviare un messaggio alla coda di Kafkaka. Un semplice oggetto JSON sarà un buon esempio:
produttore.send('linuxhint', 'topic': 'kafka')Il linuxhint è la partizione dell'argomento su cui verrà inviato l'oggetto JSON. Quando esegui lo script, non otterrai alcun output poiché il messaggio viene appena inviato alla partizione dell'argomento. È ora di scrivere un consumatore in modo che possiamo testare la nostra applicazione.
Fare un Consumatore
Ora siamo pronti per stabilire una nuova connessione come applicazione Consumer e ricevere i messaggi dal Kafka Topic. Inizia con la creazione di una nuova istanza per il consumatore:
da kafka import KafkaConsumerda kafka import TopicPartition
print('Connessione.')
consumatore = KafkaConsumer(bootstrap_servers='localhost:9092')
Ora assegna un argomento a questa connessione e anche un possibile valore di offset.
print('Assegnazione argomento.')consumatore.assegnare([TopicPartition('linuxhint', 2)])
Infine, siamo pronti per stampare il messaggio:
print('Ricevo il messaggio.')per il messaggio nel consumatore:
print("OFFSET: " + str(messaggio[0])+ "\t MSG: " + str(messaggio))
Attraverso questo, otterremo un elenco di tutti i messaggi pubblicati sulla partizione Kafka Consumer Topic. L'output di questo programma sarà:
Kafka Consumatore
Solo per un rapido riferimento, ecco lo script completo di Producer:
da kafka import KafkaProducerimport json
importa stampa
produttore = KafkaProduttore(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.discariche (v).codifica('utf-8'))
produttore.send('linuxhint', 'topic': 'kafka')
# metriche = produttore.metrica()
# stampa.pprint(metriche)
Ed ecco il programma Consumer completo che abbiamo utilizzato:
da kafka import KafkaConsumerda kafka import TopicPartition
print('Connessione.')
consumatore = KafkaConsumer(bootstrap_servers='localhost:9092')
print('Assegnazione argomento.')
consumatore.assegnare([TopicPartition('linuxhint', 2)])
print('Ricevo il messaggio.')
per il messaggio nel consumatore:
print("OFFSET: " + str(messaggio[0])+ "\t MSG: " + str(messaggio))
Conclusione
In questa lezione, abbiamo esaminato come possiamo installare e iniziare a utilizzare Apache Kafka nei nostri programmi Python. Abbiamo mostrato quanto sia facile eseguire semplici attività relative a Kafka in Python con il client Kafka per Python dimostrato.