E um projeto de plataforma de comunicação de mensagens. Tem como finalidade de cadastrar mensagens a serem enviadas, consultar status da mensagem cadastrada e excluir uma mensagem agendada.
Spring boot
- Framework de desenvolvimento Java.Spring Hateoas
- Hipermídia como o motor do estado do aplicativoLombok
- Biblioteca java que auxilia como ferramentas de construção.MySQL
- Banco de dados relacional.JPA/Hibernate
- Framework para persistência de dados / ORM.Flyway
- Controle de versão para banco de dadosH2 Database Engine
- Banco de dados executado em memória, utilizado nos testes.RabbitMQ
- RabbitMQ é o broker de mensagens de código aberto mais amplamente implantado.Swagger
- Framework para projetar, construir, documentar e usar serviços da Web RESTful.Docker
- Plataforma de virtualização
É necessário ter instalado na sua máquina os seguintes programas:
- A aplicação foi desenvolvida no java-jdk13.
- Motor de build da aplicação e atraves do Mavem.
- Aplicação de containers, neste projeto é o Docker, caso ele não esteja instalado, siga o tutorial do próprio site: Get Docker.
Primeiro passo e criar um clone deste repositorio com o comando:
git clone https://github.com/maurigre/labs-communication-api.git
Segundo passo e acessar o diretorio do projeto, com o comando:
cd ./labs-communication-api/
Terceiro passo, criar variáveis de ambiente. Neste projeto será necessário criar as seguintes variaveis:
MGR_MYSQL_DATABASE - Variável destinada para conter o nome do DATABASE
MGR_MYSQL_ROOT_PASSWORD - Destinada a conter o password de root do MySQL
MGR_MYSQL_USER - Destinada a conter seu username do MySQL
MGR_MYSQL_PASSWORD - Destinada a conter sua senha de usuário do MySQL
Observações:
-Você pode criar um arquivo .env no diretório raiz do projeto e incluir estas variáveis neste arquivo.
Exemplo:
MGR_MYSQL_DATABASE=labs_communication_db
MGR_MYSQL_ROOT_PASSWORD=123456
MGR_MYSQL_USER=labs
MGR_MYSQL_PASSWORD=123456
Quarto passo e realizar o build do projeto com o comando:
./mvnw clean compile package
Quinto passo e realizar o build do docker da API com o comando:
docker-compose build
Sexto passo e subir os containers de docker do MySql, RabbitMq e da API com o comando:
docker-compose up -d
Observações:
O projeto possui 3 profile são eles:
- prod - Profile de produção que ira rodar na porta:
8080
e irá utilizar o banco MySQL.- dev - Profile de desenvolvimento que ira rodar na porta:
8081
e irá utilizar o banco H2 (Banco em memória).- test - Profile de test que ira rodar na porta:
8082
e irá utilizar o banco H2 (Banco em memória).
Todas as informações referente ao endpoits da API estão detalhadas no swagger.
Atraves da URL:
Producao
, Desenvolvimento
São:
- Para cadastro de agendamento: POST http://localhost:8080/api-communications/v1/schedules
- Para listar todos os agendamentos: GET http://localhost:8080/api-communications/v1/schedules
- Para consulta de agendamento: GET http://localhost:8080/api-communications/v1/schedules/{id}
- Para exclusão de agendamento: DELETE http://localhost:8080/api-communications/v1/schedules/{id}
É possível consulta-los pelo endpoint da documentação via Swagger.