Este projeto consiste em dois microserviços, um de gestão de usuario e outro de notificação
- Repository Pattern
- Publisher-Subscriber (pub/sub)
Antes de iniciar, certifique-se de ter as seguintes ferramentas instaladas em seu ambiente de desenvolvimento:
- Maven 3.9.5
- JDK 17
- Docker
Executo o seguinte comando para ter o projeto em sua maquina:
git clone https://github.com/olavobelfort/microservice-design-patterns.git
Agora você poderá executar os vários comandos abaixo.
-
Para iniciar o Mensage Broker RabittMQ
-
Execute
cd microservice-design-patterns/notification
para ir até a pasta do primeiro microservice notification -
Execute o seguinte comando:
docker-compose up --build -d
-
Verifique se deu tudo certo acessando a interface do RabittMQ: http://localhost:15672/
-
Agora é preciso configurar o ambiente do segundo microservice user
-
Vá até a pasta do projeto executando
cd ../user
-
Execute novamente o comando a seguir para subir o banco de dados Postgresql
docker-compose up --build -d
-
Atenção certifiquese que você se encontra no diretorio /user
-
Execute o seguinte comando para iniciar a aplicação do microservice user
./mvnw spring-boot:run
-
Agora que você iniciou o microservice user, é preciso que você abra um novo terminal para inicializar o microservice notification
-
Vá até o destino do projeto com o nome da pasta do repositório microservice-design-patterns
-
Agora para iniciar o microservice notification execute o seguinte comando
cd notification
./mvnw spring-boot:run
- O microservice user, expõe 3 endpoints:
- http://localhost:8081/user/create (POST)
- http://localhost:8081/user/list (GET)
- http://localhost:8081/user/disable (PUT)
Quando executado o endpoint create e o disable é disparado uma mensagem na fila utilizada do RabittMQ.
Fazendo com que o microservice notification que possui um consumer, será capaz de ler a mensagem enviada. Olhando o terminal do notification será possivel visualizar a mensagem enviada
- O microservice notification, não possui complexibilidade, somente o consumer da fila utilizada, porem é possivel adicionar novas features aproveitando essa estruta, como por exemplo adicionar um seviço SMTP para realizar o encaminhamento da mensagem no e-mail do usuario