Skip to content

[F4-01] Worker con BullMQ: colas, arranque y apagado ordenado #54

Open

Description

@JCCG-code

Fase: F4 · Tamaño: S · Depende de: #23 (F1-03), #45 (F2-13)

Objetivo

Que los trabajos largos se ejecuten fuera de las peticiones HTTP, en un proceso worker del mismo paquete apps/server.

Alcance

  • Entrada apps/server/src/worker/index.ts (pnpm --filter server start:worker), mismo código que la API.
  • Colas BullMQ:
    • pipeline: pasos de texto, concurrencia 10.
    • media: voz, música e imagen, concurrencia 4.
    • render: FFmpeg, concurrencia max(1, núcleos/2).
  • Conexión Redis compartida con la API (REDIS_URL).
  • Directorio de trabajo por trabajo en os.tmpdir()/jccg/<projectId>/<jobId>, borrado en finally.
  • Apagado ordenado con SIGTERM: deja de aceptar trabajos, espera a los activos hasta 60 s y cierra.
  • Servicio worker en docker-compose con ffmpeg instalado.

Criterios de aceptación

  • docker compose up levanta server y worker; un trabajo de prueba encolado desde la API se procesa en el worker.
  • Test: tras un trabajo (correcto o fallido), su directorio de trabajo ya no existe.
  • Test: SIGTERM con un trabajo activo de 5 s espera a que termine y sale con código 0.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions