Para concluir esta lição, você deve ter uma instalação ativa do Kafka em sua máquina. Leia Instalar Apache Kafka no Ubuntu para saber como fazer isso.
Instalando o cliente Python para Apache Kafka
Antes de começarmos a trabalhar com o Apache Kafka no programa Python, precisamos instalar o cliente Python para Apache Kafka. Isso pode ser feito usando pip (Índice de pacote Python). Aqui está um comando para fazer isso:
pip3 install kafka-pythonEsta será uma instalação rápida no terminal:
Instalação do cliente Python Kafka usando PIP
Agora que temos uma instalação ativa para Apache Kafka e também instalamos o cliente Python Kafka, estamos prontos para começar a codificar.
Fazendo um produtor
A primeira coisa a ter de publicar mensagens no Kafka é um aplicativo produtor que pode enviar mensagens para tópicos no Kafka.
Observe que os produtores Kafka são produtores de mensagens assíncronas. Isso significa que as operações feitas enquanto uma mensagem é publicada na partição do Kafka Topic não são bloqueadoras. Para manter as coisas simples, escreveremos um editor JSON simples para esta lição.
Para começar, crie uma instância para o Produtor Kafka:
de kafka import KafkaProducerimport json
importar pprint
produtor = KafkaProdutor (
bootstrap_servers = 'localhost: 9092',
value_serializer = lambda v: json.despejos (v).codificar ('utf-8'))
O atributo bootstrap_servers informa sobre o host e a porta do servidor Kafka. O atributo value_serializer é apenas para o propósito de serialização JSON de valores JSON encontrados.
Para brincar com o Produtor Kafka, vamos tentar imprimir as métricas relacionadas ao Produtor e ao cluster Kafka:
metrics = produtor.Métricas()pprint.pprint (métricas)
Veremos o seguinte agora:
Kafka Mterics
Agora, vamos finalmente tentar enviar alguma mensagem para o Kafka Queue. Um objeto JSON simples será um bom exemplo:
produtor.enviar ('linuxhint', 'tópico': 'kafka')O linuxhint é a partição de tópico na qual o objeto JSON será enviado. Ao executar o script, você não obterá nenhuma saída, pois a mensagem é apenas enviada para a partição do tópico. É hora de escrever um consumidor para que possamos testar nosso aplicativo.
Fazendo um consumidor
Agora, estamos prontos para fazer uma nova conexão como um aplicativo Consumidor e receber as mensagens do Tópico Kafka. Comece criando uma nova instância para o consumidor:
de kafka import KafkaConsumerfrom kafka import TopicPartition
print ('Fazendo conexão.')
consumidor = KafkaConsumer (bootstrap_servers = 'localhost: 9092')
Agora, atribua um tópico a esta conexão e um possível valor de deslocamento também.
print ('Atribuindo Tópico.')consumidor.atribuir ([TopicPartition ('linuxhint', 2)])
Finalmente, estamos prontos para imprimir o mssage:
print ('Recebendo mensagem.')para mensagem no consumidor:
imprimir ("OFFSET:" + str (mensagem [0]) + "\ t MSG:" + str (mensagem))
Com isso, obteremos uma lista de todas as mensagens publicadas na partição de tópico do consumidor Kafka. A saída para este programa será:
Consumidor Kafka
Apenas para uma referência rápida, aqui está o script completo do Produtor:
de kafka import KafkaProducerimport json
importar pprint
produtor = KafkaProdutor (
bootstrap_servers = 'localhost: 9092',
value_serializer = lambda v: json.despejos (v).codificar ('utf-8'))
produtor.enviar ('linuxhint', 'tópico': 'kafka')
# metrics = produtor.Métricas()
# pprint.pprint (métricas)
E aqui está o programa do consumidor completo que usamos:
de kafka import KafkaConsumerfrom kafka import TopicPartition
print ('Fazendo conexão.')
consumidor = KafkaConsumer (bootstrap_servers = 'localhost: 9092')
print ('Atribuindo Tópico.')
consumidor.atribuir ([TopicPartition ('linuxhint', 2)])
print ('Recebendo mensagem.')
para mensagem no consumidor:
imprimir ("OFFSET:" + str (mensagem [0]) + "\ t MSG:" + str (mensagem))
Conclusão
Nesta lição, vimos como podemos instalar e começar a usar o Apache Kafka em nossos programas Python. Mostramos como é fácil realizar tarefas simples relacionadas ao Kafka em Python com o cliente Kafka para Python demonstrado.