Este repositório define um ambiente completo de microsserviços com suporte a mensageria, persistência em banco de dados e integração via SFTP, utilizando Docker.
| Serviço | Porta(s) | Descrição |
|---|---|---|
| RabbitMQ | 5672 / 15672 | Broker de mensagens com painel web |
| PostgreSQL | 5432 | Banco de dados relacional |
| SFTP (Atmoz) | 2222 | Servidor de arquivos via SFTP |
| Pedido Producer | 8080 | Envia mensagens para o RabbitMQ |
| Pedido Consumer | 8085 | Consome mensagens e grava no banco de dados |
| Venda Producer | 8098 | Envia mensagens e arquivos via SFTP |
| Venda Consumer | 8097 | Consome mensagens e grava no banco de dados |
| Transação Producer | 8095 | Envia mensagens para o RabbitMQ |
| Transação Consumer | 8090 | Consome mensagens e grava no banco de dados |
Antes de executar os containers, é necessário compilar os projetos dos serviços produtores e consumidores utilizando o Gradle. Certifique-se de que o Java 17 esteja configurado como padrão no sistema, pois os microsserviços foram desenvolvidos com essa versão.
- No dirétorio microservicos execute:
./gradlew clean build
Em sistemas Windows, utilize
gradlew.batao invés de./gradlew.
Exemplo:
./gradlew clean build -x test
- Verifique a estrutura de diretórios
Certifique-se de que os diretórios abaixo existem:
.
├── docker-compose.yml
├── pedido-producer/
├── pedido-consumer/
├── venda-producer/
├── venda-consumer/
├── transacao-producer/
├── transacao-consumer/
├── upload/ # Diretório compartilhado via SFTP
└── init-db/ # Scripts SQL para inicialização do banco
- Suba os containers
docker-compose up --build -d
O parâmetro --build força a reconstrução das imagens customizadas.
-
RabbitMQ UI: http://localhost:15672
- Usuário:
guest - Senha:
guest
- Usuário:
-
PostgreSQL:
- Host:
localhost - Porta:
5432 - Usuário:
postgres - Senha:
postgres
- Host:
-
SFTP:
- Host:
localhost - Porta:
2222 - Usuário:
development - Senha:
12345 - Caminho:
/home/development/out/gateway
- Host:
docker-compose down
Se desejar também remover os volumes (banco de dados, arquivos persistidos, etc):
docker-compose down -v
- Os serviços
pedido-consumer,venda-consumeretransacao-consumerdependem de PostgreSQL e RabbitMQ e só iniciarão quando os mesmos estiverem saudáveis (healthcheck). - O diretório
upload/é utilizado pelo container SFTP para disponibilizar arquivos via login SFTP. - O diretório
init-db/pode conter scripts.sqlque serão executados automaticamente na inicialização do PostgreSQL.