Kafka é uma plataforma de streaming distribuída normalmente usada para construir pipelines de dados em tempo real, mas pode ser adaptada para diferentes cenários.
O projeto é uma aplicação Python utilizando o Apache Kafka, criada para ser um exemplo das funcionalidades básicas do Kafka. Este projeto tem como objetivo ser uma referência para projetos posteriores com a ferramenta.
No Apache Kafka, um consumer é um programa que lê dados de um tópico (um canal de comunicação) e os processa. É como um receptor de mensagens em uma fila de correio. Enquanto isso, um producer é um programa que envia dados para um tópico. É como o remetente de mensagens na fila de correio. Em resumo, os consumers consomem (leem) dados e os producers produzem (enviam) dados no Kafka.
- batch
- consumer_batch.py
- producer_batch.py
- database
- .env
- consumer_database.py
- producer_database.py
- streaming
- consumer.py
- producer.py
- streaming_several_topics
- consumer_several_topics.py
- producer_several_topics.py
- topic
- create_topic.py
- delete_topic.py
- list_topic.py
- messages_topic.py
- docker-compose.yml
- Criar topico: Cria um novo tópico no Kafka.
- Deletar topico: Deleta um tópico no Kafka.
- Listar topicos: Lista todos os tópicos do Kafka.
- Mensagens topico: Carrega todas as mensagens já enviadas em um tópico do Kafka, as mensagens ficam disponiveis em um tópico conforme as configurações de tempo de retenção e tamanho máximo.
- Consumer: Consome/Lê as mensagens de dentro de um tópico.
- Producer: Produz e envia as mensagens para dentro de um tópico.
- Python
- Poetry
- Docker
-
Clone este repositório:
git clone https://github.com/rhanyele/exemplo-apache-kafka.git
-
Acesse o diretório do projeto:
cd exemplo-apache-kafka
-
Instale as dependências usando Poetry:
poetry install
-
Execute o Docker Composer:
docker compose up -d
-
Na pasta database, crie um arquivo
.env
com as variáveis de conexão do seu banco de dados PostgreSQL:DB_HOST=seu_host DB_PORT=sua_porta DB_NAME=seu_banco_de_dados DB_USER=seu_usuario DB_PASS=sua_senha
Cria um tópico no Kafka para a comunicação entre os producers e consumers. Você pode criar quantos tópicos forem necessários.
poetry run python .\topic\create_topic.py
Deleta um tópico no Kafka.
poetry run python .\topic\delete_topic.py
Lista todos os tópicos do Kafka.
poetry run python .\topic\list_topic.py
Lê todas as mensagens enviadas em um tópico no Kafka.
poetry run python .\topic\messages_topic.py
Cria um producer que vai enviar mensagens para um tópico no Kafka.
poetry run python .\streaming\producer.py
Cria um consumer que vai consumir/ler as mensagens de um tópico no Kafka.
poetry run python .\streaming\consumer.py
Cria um producer que vai enviar um lote de mensagens para um tópico no Kafka.
poetry run python .\batch\producer_batch.py
Cria um consumer que vai consumir/ler as mensagens em lote de um tópico no Kafka.
poetry run python .\batch\consumer_batch.py
Cria um producer que vai enviar 10 mensagens seguidas para um tópico no Kafka.
poetry run python .\database\producer_database.py
Cria um consumer que vai consumir/ler as mensagens de um tópico no Kafka e salvar no banco de dados PostreSQL.
poetry run python .\database\consumer_database.py
Cria um producer que vai enviar mensagem para vários tópicos no Kafka.
poetry run python .\streaming_several_topics\producer_several_topics.py
Cria um consumer que vai consumir/ler as mensagens de vários tópico no Kafka.
poetry run python .\streaming_several_topics\consumer_several_topics.py
Rhanyele Teixeira Nunes Marinho
Este projeto está licenciado sob a MIT License.