REST API para Cadastro de Produtos de um Marketplace.
Desenvolver uma API RESTful que:
- Receberá uma planilha de produtos (segue em anexo) que deve ser processada em background (queue).
- Ter um endpoint que informe se a planilha for processada com sucesso ou não.
- Seja possível visualizar, atualizar e apagar os produtos (só é possível criar novos produtos via planilha).
É necessário ter instalado em seu ambiente:
- MongoDB - Banco de Dados utilizado.
- RabbitMQ - Servidor de Mensageria.
- Maven - Controle de Dependências do projeto.
- Java 8 - Java versão 8 ou superior.
Criar database MongoDB com as infos:
- [New Database MongoDB]
- Database Name: marketplace
- Collection Name: product
Criar nova Exchange e Queue RabbitMQ com as infos:
- [New Exchange and Queue RabbitMQ]
- Exchange Name: marketplace
- Queue Name: product
-
[Start/Create RabbitMQ] -> (http://coderjony.com/blogs/how-to-enable-rabbitmq-management-plugin-in-windows/)
-
[Start/Create MongoDB] -> https://docs.mongodb.com/compass/master/databases/
Fazer o donwload deste repositório, para rodar a aplicaçao:
Na raiz do projeto, executar o comando para instalar projeto:mvn clean install
mvn spring-boot:run
A aplicação api-marketplace http://localhost:8080/products está rodando e pronta para utilização.
O projeto está configurado com swagger para documentação e detalhamento dos métodos disponíveis via Rest.
Acesse swagger-ui: http://localhost:8080/swagger-ui.html#/product-resource/
Configurar Body(form-data) da chamada POST com Key 'productFile' selecionando a planilha conforme abaixo:
- Aprimorar a aplicação para remover os trechos de código 'e.printStackTrace()' e trata-los corretamente.
- Ajustar o ponto de insert na base para transformar UncheckedException do Mongo em Exception tratável sem interromper o processo em caso de erro de gravação.
- Melhorar o tratamento de Threads para otimizar a Concorrência do consumo da Queue.
- Realizar os steps de configuração do projeto com Docker, automatizando o processo de instalação da aplicação e recursos necessários.