Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/maxjdev/microservice-email-with-amqp-rabbitmq-log4j2

Microsserviço de envio de e-mail com Spring-Mail com AMQP, RabbitMQ, Log4j2, MySQL e Flyway
https://github.com/maxjdev/microservice-email-with-amqp-rabbitmq-log4j2

amqp flyway log4j2 lombok mysql rabbitmq slf4j spring

Last synced: 9 days ago
JSON representation

Microsserviço de envio de e-mail com Spring-Mail com AMQP, RabbitMQ, Log4j2, MySQL e Flyway

Awesome Lists containing this project

README

        

# Microsserviço E-mail

## Descrição

Projeto para trabalhar envio de emails usando Spring Mail via requisição http ou por meio de consumo de mensagens com Spring AMQP + RabbitMQ. Alêm disso contém validações, migrações com Flyway, Logs com Slf4j + Log4j2 e persistência no banco de dados MySQL.

## Tecnologias e dependências do projeto

- **RabbitMQ:** Broker de mensagens para comunicação assíncrona.
- **Spring AMQP:** Integração do Spring com RabbitMQ para envio e recebimento de mensagens.
- **Spring Boot:** Base para a criação de microsserviços.
- **Spring Web:** Criação de API RESTful.
- **Spring Devtools:** Ferramentas adicionais para desenvolvimento, como recarga automática.
- **Spring Data JPA:** Abstração para acesso a dados e manipulação de entidades JPA.
- **Spring Validation:** Validação de dados de entrada.
- **Slf4j + Log4j2:** Frameworks para logging com configuração avançada e personalizada.
- **Lombok:** Redução de boilerplate de código, como getters, setters e construtores.
- **MySQL:** Banco de dados relacional (SQL) para persistência de dados.
- **Flyway:** Ferramenta de migração de banco de dados para versionamento e controle de esquema.

## Testar o projeto

- Com docker e docker-compose instalados navegue até o diretório do projeto, abra seu terminal e digite o seguinte comando

```bash
docker-compose up -d
```

- Adicione seu username e password nas configurações do Spring-Mail do projeto.

- Adicione seu address nas configurações do RabbitMQ do projeto

- Inicie o projeto.

```bash
./gradlew bootRun
```

## Endpoints

| route | description |
|----------------------------------------|---------------------------------------------------------------------------|
| POST /email/post/send-email | Envia e-mail passando o JSON no body |
| GET /email/get/emails | Recebe uma Page de e-mails passando argumentos page e items |

#### Objeto JSON
```json
{
"ownerRef": "12345",
"emailFrom": "[email protected]",
"emailTo": "[email protected]",
"subject": "Assunto do Email",
"text": "Conteúdo do email aqui."
}
```

## Contribuição

- Faça um fork deste repositório e envie suas alterações por meio de pull requests.
- Para reportar bugs ou sugerir melhorias, abra um issue na página do projeto.