/api-marketplace

API RESTful para processamento de planilhas. Tecnologias: (Java 8, Spring Boot, RabbitMQ, Apache POI, MongoDB e Swagger)

Primary LanguageJava

API MARKETPLACE

REST API para Cadastro de Produtos de um Marketplace.

Regras de funcionamento

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).

Pré-Requisitos

É 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.

Configurações do Ambiente

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

Apoio Técnico

Instalar e executar o projeto

Fazer o donwload deste repositório, para rodar a aplicaçao:

Passo 1:
Na raiz do projeto, executar o comando para instalar projeto:
mvn clean install
Passo 2:
Executar o comando para iniciar a aplicação:
mvn spring-boot:run

A aplicação api-marketplace http://localhost:8080/products está rodando e pronta para utilização.

Documentação API REST

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/

Processamento via Postman

Configurar Body(form-data) da chamada POST com Key 'productFile' selecionando a planilha conforme abaixo:

process_postman

TODO

Melhorar tratamentos de Exceptions em geral

  • 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.

Otimização do controle da mensageria

  • Melhorar o tratamento de Threads para otimizar a Concorrência do consumo da Queue.

Instalação do Projeto com Docker

  • Realizar os steps de configuração do projeto com Docker, automatizando o processo de instalação da aplicação e recursos necessários.

Autor