Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lubrum/microservicos-java-spring
Projeto da Alura de Microsserviços na prática: implementando com Java e Spring e RabbitMQ
https://github.com/lubrum/microservicos-java-spring
docker docker-compose flyway java mysql openfeign rabbitmq spring spring-boot spring-cloud spring-cloud-eureka spring-cloud-gateway spring-web springboot
Last synced: 4 days ago
JSON representation
Projeto da Alura de Microsserviços na prática: implementando com Java e Spring e RabbitMQ
- Host: GitHub
- URL: https://github.com/lubrum/microservicos-java-spring
- Owner: Lubrum
- Created: 2023-10-07T14:20:22.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-25T15:13:59.000Z (9 months ago)
- Last Synced: 2024-02-25T16:28:30.916Z (9 months ago)
- Topics: docker, docker-compose, flyway, java, mysql, openfeign, rabbitmq, spring, spring-boot, spring-cloud, spring-cloud-eureka, spring-cloud-gateway, spring-web, springboot
- Language: Java
- Homepage:
- Size: 118 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto de microserviços com Java, Spring, Rabbitmq, Eureka, Gateway, OpenFeign, Docker, MySQL e Flyway.
# Para executar o projeto
1. Rode um banco de dados mysql em um container Docker:
```sh
docker run -d -p 3320:3320 --name mysql-container -e MYSQL_ROOT_PASSWORD=root mysql:8.1.0
```2. Suba o RabbitMQ em um container Docker:
```sh
cd rabbit && docker compose up -d
```3. Inicialize os módulos deste projeto. Basta dar run em cada um deles nesta ordem:
- eureka-server-run;
- gateway-run;
- pedidos-run;
- avaliacao-run;
- pagamentos-run;4. Teste as APIs conforme modelos disponibilizados no diretório .postman para uso e testes no Postman.
5. Avalie também as filas do RabbitMQ no Admin em localhost:15672 e nos logs das aplicações pedidos e avaliações que possuem listener em eventos de pagamentos.
## Passos para criação de um cluster com três nós do RabbitMQ:
1. Criar containers do rabbitmq:
```sh
docker network create alura
docker run -d --rm --net alura --hostname rabbit1 --name rabbit1 -p 8085:15672 -e RABBITMQ_ERLANG_COOKIE=alura_secret rabbitmq:3.10-management
docker run -d --rm --net alura --hostname rabbit2 --name rabbit2 -p 8086:15673 -e RABBITMQ_ERLANG_COOKIE=alura_secret rabbitmq:3.10-management
docker run -d --rm --net alura --hostname rabbit3 --name rabbit3 -p 8087:15674 -e RABBITMQ_ERLANG_COOKIE=alura_secret rabbitmq:3.10-management
```2. Criar um cluster com três nós, unindo os containers 'rabbit2' e 'rabbit3' do RabbitMQ ao container 'rabbit1':
```sh
docker exec -it rabbit2 rabbitmqctl stop_app
docker exec -it rabbit2 rabbitmqctl reset
docker exec -it rabbit2 rabbitmqctl join_cluster rabbit@rabbit1
docker exec -it rabbit2 rabbitmqctl start_appdocker exec -it rabbit3 rabbitmqctl stop_app
docker exec -it rabbit3 rabbitmqctl reset
docker exec -it rabbit3 rabbitmqctl join_cluster rabbit@rabbit1
docker exec -it rabbit3 rabbitmqctl start_app
```3. Para que os nós assumam mensagens de que ficarem indisponíveis:
Abrir o RabbitMQ Admin no browser no localhost:15672 (endereço do 'rabbit1').
RabbitMQ Admin -> Policies -> Add / Update a policy:
> Name: ha
> Pattern: .*
> Apply to: Exchanges and Queues
> Definition: ha-mode = All