Projeto para controle de envio de mensagens em diversas plataformas. Construído com desafio de seleção do Luiza Labs.
Para compilação e execução da aplicação, são necessárias as ferramentas:
Para rodar a aplicação ou a rotina de testes seguir os passos abaixo. Utilizando um terminal ou ferramenta de GIT, fazer uma cópia do repositório:
git clone https://github.com/lucasnata/MessageDelivery.git
Dentro do diretório do projeto, executar o comando Maven:
mvn clean package
Para gerar a imagem Docker do projeto, rodar o seguinte comando no terminal:
docker build -t lucasnata/message-delivery .
Em seguida rodar o comando do docker-compose, para subir o Banco de Dados e Aplicação:
docker-compose up -d
A aplicação estará disponível na seguinte url:
http://localhost:8080/message
Funcionalidade | Resquest | URL | Body Envio(Exemplo) | Response Code(Exemplo) | Response(Exemplo) |
---|---|---|---|---|---|
Cadastro de Nova Mensagem | POST | http://localhost:8080/message | {"dateTimeSchedule": "2020-09-06T02:10:43.511Z","recipient": "[email protected]","message": "Alguma mensagem interresante","messageType": "EMAIL"} | 200 | {"dateTimeSchedule": "2020-09-06T02:10:43.511Z","recipient": "[email protected]","message": "Alguma mensagem interresante","messageType": "EMAIL"} |
Busca de Status de Mensagem por ID | GET | http://localhost:8080/message/{id}/status | --- | 200 | {"id": 2, "status": "SCHEDULED"} |
Deleta Mensagem | DELETE | http://localhost:8080/message/{id} | --- | 200 | {"id": 2, "status": "DELETED" } |
Todas as Mensagem | GET | http://localhost:8080/message | --- | 200 | [{"id": 2, "status": "SCHEDULED"}... |
Ao utilizar o endpoint de cadastro a resposta vem com:
- Http Status - 200
- No header é retorna a chave "Location" com a url de consulta ao item adicionado
O endpoint retorna apenas o id e status da mensagem
O endpoint de consulta status retorna a mensagem com o status DELETED
Com a aplicação rodando em localhost, pode-se utilizar o Swagger para testar as requisições:
http://localhost:8080/swagger-ui.html
Envio das mensagens para uma fila do RabittMQ, garantindo maior desacoplamento, para uso das ferramentas que irão garantir a entrega das mensagens.
- Spring Boot Framework de Desenvolvimento Java
- MySQL Banco de Dados Relacional
- Hibernate Framework para Persistência de Banco de Dados
- Docker Ferramenta de containers, que facilitam a publicação das aplicações
- JUnit Ferramenta de Testes
- H2 Database Engine Banco de dados em memória(para uso nos testes)
- RabbitMQ Ferramenta de mensageria