- Grupo 11:
- Pedro Ono - RM 354950
- Elton Xavier Souza - RM 354254
- Welder Ressutti - RM 354557
Desenvolvido por: Welder Ressutti
O microsserviço de envio de e-mails no Glicare é responsável por processar eventos recebidos do broker, originados pelo microsserviço de agendamento de exames e consultas.
Ele obtém os dados do paciente, compõe a mensagem e realiza o envio do e-mail de forma automatizada, garantindo a comunicação eficiente entre o sistema e os usuários.
- Consome a mensagem do broker pelo canal de agendamento de exame ou agendamento de consulta, contendo o ID do paciente e a data/hora do agendamento.
- Solicita os dados do paciente ao microsserviço de gerenciamento de pacientes via requisição GET, para obter o endereço de e-mail.
- Compõe a mensagem com base no canal de origem do evento (exame ou consulta), definindo o destinatário, o assunto e o corpo do e-mail.
- Envia o e-mail.
- Java 17 – Linguagem de programação utilizada no desenvolvimento do sistema.
- Spring Web – Base para a construção das APIs RESTful do sistema.
- Spring Cloud – Conjunto de ferramentas para facilitar a arquitetura baseada em microsserviços.
- Spring Cloud Stream – Implementação de mensageria para comunicação assíncrona entre microsserviços via RabbitMQ.
- RabbitMQ – Message broker utilizado para integração assíncrona entre os microsserviços.
- OpenFeign – Cliente HTTP declarativo para facilitar a comunicação síncrona entre os microsserviços.
- Spring Mail – Módulo para envio de e-mails automáticos de notificações.
- Lombok – Redução de boilerplate no código, simplificando a criação de classes Java.
- API Patient – Serviço utilizado para buscar informações de pacientes a partir do ID.
- Docker – Containerização dos microsserviços para facilitar o deploy e a escalabilidade.
A arquitetura hexagonal consiste na ideia de utilizar portas e adaptadores para realizar a integração entre a camada externa e interna, isolando o core da aplicação para que alterações externas não interfiram nas regras de negócio e casos de uso.
Este microsserviço foi desenvolvido seguindo os padrões de API RESTful, arquitetura hexagonal, e também respeitando os princípios SOLID de isolamento de responsabilidades.
A arquitetura desta aplicação foi desenvolvida da seguinte forma:
- Git (caso queira clonar o repositório, mas você pode apenas baixá-lo):
- Docker Desktop (para executar a aplicação através de containers):
Para clonar o repositório, use o comando:
git clone https://github.com/welderessutti/api-diagnosis
Caso não queira clonar o repositório, você pode baixá-lo em GitHub.
No terminal, dentro do diretório raíz do projeto (local onde se encontra o arquivo compose.yaml da aplicação), execute o comando abaixo para subir todos os containers da aplicação:
*Atenção: Antes de executar o comando, você deve trocar os valores das variáveis de ambiente SPRING_MAIL_USERNAME e SPRING_MAIL_PASSWORD para os valores do seu serviço de envio de email.
$env:SPRING_MAIL_USERNAME="SEU_EMAIL"; $env:SPRING_MAIL_PASSWORD="SUA_SENHA"; docker compose up -d
set SPRING_MAIL_USERNAME=SEU_EMAIL
set SPRING_MAIL_PASSWORD=SUA_SENHA
docker compose up -d
SPRING_MAIL_USERNAME="SEU_EMAIL" SPRING_MAIL_PASSWORD="SUA_SENHA" docker compose up -d
O Docker tentará baixar a imagem no repositório do Docker Hub, caso ele não encontre a imagem, ele realizará a build da aplicação (.jar), criará a imagem e executará os containers automaticamente.
Antes do container da aplicação subir, ele aguardará o container do broker RabbitMQ estar pronto utilizando um healthcheck, quando pronto, o container da aplicação inicia, e estará pronto para receber os eventos do broker.