O Apache Pulsar é uma plataforma de mensageria e streaming de dados distribuída e escalável.
O projeto é uma aplicação Python utilizando o Apache Pulsar, criada para ser um exemplo das funcionalidades básicas do Pulsar. Este projeto tem como objetivo ser uma referência para projetos posteriores com a ferramenta.
Pulsar é construído no padrão publish–subscribe (publicar-assinar). Nesse padrão, os produtores publicam mensagens nos tópicos; os consumidores assinam esses tópicos, processam as mensagens recebidas e enviam confirmações ao broker quando o processamento é concluído.
- batch
- consumer_batch.py
- producer_batch.py
- database
- .env
- consumer_data.py
- producer_data.py
- streaming
- consumer.py
- producer.py
- docker-compose.yml
- Consumer: Faz a assinatura de um tópipco e consome/lê as mensagens de dentro do 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-pulsar.git
-
Acesse o diretório do projeto:
cd exemplo-apache-pulsar
-
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 producer que vai enviar mensagens para um tópico.
poetry run python .\streaming\producer.py
Cria um consumer que vai consumir/ler as mensagens de um tópico.
poetry run python .\streaming\consumer.py
Cria um producer que vai enviar um lote de mensagens para um tópico.
poetry run python .\batch\producer_batch.py
Cria um consumer que vai consumir/ler as mensagens em lote de um tópico.
poetry run python .\batch\consumer_batch.py
Cria um producer que vai enviar 10 mensagens seguidas para um tópico.
poetry run python .\database\producer_data.py
Cria um consumer que vai consumir/ler as mensagens de um tópico e salvar no banco de dados PostreSQL.
poetry run python .\database\consumer_data.py
Rhanyele Teixeira Nunes Marinho
Este projeto está licenciado sob a MIT License.