Este projeto é cria um microsserviço user que por meio de um broker envia uma mensagem assíncrona e não bloqueante para outro microserviço de envio de e-mails.
- Java 21: Linguagem de programação utilizada no desenvolvimento do serviço.
- Spring Boot: Framework para criação de aplicações Java, facilitando a configuração e a construção de serviços web.
- Spring Mail: Módulo do Spring para enviar e-mails de forma simplificada.
- RabbitMQ: Sistema de mensageria para lidar com a fila de e-mails, garantindo alta disponibilidade e processamento assíncrono.
- CloudAMQP: Serviço de hospedagem gerenciado do RabbitMQ na nuvem, utilizado para escalar o sistema de mensageria.
- Docker: Utilizado para containerização da aplicação, garantindo portabilidade e facilidade de deploy.
- PostgreSQL: Banco de dados relacional utilizado para armazenar logs, templates de e-mails e informações de status de envio.
- Maven: Gerenciador de dependências e build automation.
- Postman: Ferramenta utilizada para testar e documentar a API de envio de e-mails.
-
Envio de E-mails: A principal função do microsserviço é gerenciar o envio de e-mails transacionais e de notificação, através de filas (RabbitMQ/CloudAMQP), garantindo que sejam processados de forma assíncrona e eficiente.
-
Fila de Mensagens: Utiliza RabbitMQ (local ou via CloudAMQP) para lidar com o processamento em massa de e-mails, escalando horizontalmente conforme a demanda.
-
Armazenamento de Dados: Usa PostgreSQL para armazenar logs de envio, templates de e-mails e informações de status, garantindo persistência e rastreamento detalhado.
-
Envio via SMTP do Gmail: O microsserviço utiliza o SMTP do Gmail como servidor de e-mail para o envio das mensagens.
-
Template de E-mails: Suporte para uso de templates personalizáveis em HTML para envio de e-mails.
- Docker e Docker Compose instalados.
- Java 21 instalado.
- PostgreSQL (local ou via container).
- RabbitMQ (local ou via CloudAMQP).
- Conta de e-mail Gmail configurada para envio via SMTP.
- Postman para testar a API.
Para utilizar o Gmail como servidor SMTP, adicione as seguintes configurações no arquivo application.properties
ou application.yml
:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=seu-email@gmail.com
spring.mail.password=sua-senha
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
-
Clone o repositório:
git clone https://github.com/TexeiraThiago/EmailMicroService.git
-
Execute o microsserviço com Docker:
docker-compose up
-
Executar o projeto na sua IDE
-
Acessar a aplicação por padrão em http://localhost:8081/users
Exemplo de Requisição POST
Para enviar um e-mail, faça uma requisição POST para o endpoint /send-email com o seguinte corpo:
{
"to": "email_destino@example.com",
"subject": "Assunto do E-mail",
"body": "Corpo da mensagem em texto ou HTML"
}
Contribuição
Sinta-se à vontade para abrir issues ou pull requests com sugestões e melhorias.