API para gerenciar produtos e categorias, com integração AWS SNS/SQS para envio de mensagens e armazenamento de eventos de catálogo. Esta API é parte do fluxo do projeto que envolve a LambdaConsumer
src/main/java/com/vitoriadeveloper/catolog_api/
├── config
| ├── aws
| ├── AwsSnsConfig.java
| ├── MongoDBConfig.java
├── controllers
│ ├── CategoryController.java
│ └── ProductController.java
├── domain
| ├── exceptions
| ├── CategoryNotFoundException
| ├── GlobalExceptionHandler
| ├── ProductNotFoundException
| ├── Category.java
| ├── Product.java
|
├── dto
│ ├── AwsMessageCategoryDTO.java
│ └── AwsMessageProductDTO.java
│ ├── CategoryRequestDTO.java
│ └── CategoryResponseDTO.java
│ ├── ProductRequestDTO.java
│ └── ProductResponseDTO.java
├── mappers
│ ├── CategoryMapper.java
│ └── ProductMapper.java
├── repositories
│ └── CategoryRepository.java
│ └── ProductRepository.java
└── services
└── AwsSnsService.java
└── CategoryService.java
└── ProductService.java- CRUD completo de categorias.
- Envio de mensagens ao SNS em cada operação:
- Criação
- Atualização
- Exclusão
- CRUD completo de produtos.
- Validação da categoria associada.
- Envio de mensagens ao SNS em cada operação.
AwsSnsService é responsável por publicar eventos:
-
publishCategory()→ Mensagens de categoria -
publishProdct()→ Mensagens de produto
As mensagens enviadas são consumidas por uma Lambda responsável por atualizar o catálogo em S3.
- Java 21
- Spring Boot 3+
- Spring Data MongoDB
- AWS SDK v2 (SNS)
- Jackson Databind
- Clonar o repositório:
git clone https://github.com/vitoriadeveloper/catolog_api.git- Configurar
MongoDBlocal ou remoto emMongoDBConfig.java, é recomendado que se faça o download no site do MongoDb - Configurar credenciais AWS
(AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY)no ambiente, também podem ser obtidas através da criação de um usuário no IAM no console da aws. - Build e run:
./mvnw clean install
./mvnw spring-boot:run| Método | Descrição |
|---|---|
| GET /categorias | Listar todas categorias |
| POST /categorias | Criar nova categoria |
| PUT /categorias/{id} | Atualizar categoria |
| DELETE /categorias/{id} | Deletar categoria |
| Método | Descrição |
|---|---|
| GET /produtos | Listar todoss produtos |
| POST /produtos | Criar novo produto |
| PUT /produtos/{id} | Atualizar produto |
| DELETE /produtos/{id} | Deletar produto |
- Criação/atualização/exclusão em CategoryService ou ProductService → publica mensagem no SNS.
- Uma Lambda (consumidor SQS) processa a mensagem e atualiza o catálogo em S3.