Skip to content

rodrigocordulab/fiap-8soat-g56-hackaton-processor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FIAP X - Processor Service

📌 Introdução

Este repositório contém o microserviço de processamento de vídeos do projeto FIAP X, responsável por consumir vídeos da fila RabbitMQ, extrair seus frames com OpenCV, gerar um arquivo ZIP contendo as imagens, e atualizar o status do vídeo no banco de dados. Em caso de falha, o serviço também pode notificar o usuário via e-mail utilizando a fila notification_queue.

Este serviço é executado de forma contínua e assíncrona, permitindo o processamento de múltiplos vídeos de maneira escalável.

🚀 Tecnologias Utilizadas

  • OpenCV (opencv-python-headless) (Processamento de vídeo)
  • SQLAlchemy (ORM para banco de dados relacional)
  • RabbitMQ (Fila de mensageria)
  • Pika (Cliente RabbitMQ)
  • PostgreSQL (Banco relacional)
  • Docker e Docker Compose (Ambiente containerizado)

📺 Arquitetura do Sistema

O Processor Service atua como consumidor da fila video_processing, realizando o processamento e salvando os resultados em disco e no banco.

Arquitetura do Sistema

📂 Estrutura do Projeto

processor-service/
├── app/
│   ├── main.py                  # Inicia o consumidor
│   ├── consumer.py              # Lógica de consumo da fila e controle de fluxo
│   ├── processor.py             # Extração de frames via OpenCV
│   ├── zipper.py                # Criação do arquivo ZIP
│   ├── notifier.py              # Envia notificações de status via RabbitMQ
│   ├── models/
│   │   ├── video.py             # Modelo da entidade vídeo
│   │   └── user.py              # Modelo do usuário (referência do vídeo)
│   └── db.py                    # Conexão com o banco de dados
├── requirements.txt             # Dependências do Python
├── Dockerfile                   # Container do serviço
└── docker-compose.yml           # Orquestração local (opcional)

🔄 Fluxo de Processamento

  1. Consome mensagem da fila video_processing
  2. Atualiza status do vídeo para processing
  3. Extrai os frames com OpenCV
  4. Gera arquivo ZIP com as imagens
  5. Atualiza status para done e salva o zip_path
  6. Notifica o usuário (status: success ou error)

📦 Exemplo de mensagem consumida

{
  "video_id": 4,
  "path": "/uploads/video_teste_fiapx.mp4",
  "user_email": "[email protected]"
}

🛠️ Como Executar

docker compose up processor

O serviço ficará em execução contínua, consumindo novas mensagens à medida que forem inseridas na fila RabbitMQ.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published