[AMQP] Consumed: media.processing.requests
[WORKER] FFMPEG stitching chunks...
The Architecture
01 / Bounded Contexts
User Service
Handling Identity & Access Management. Issues JWTs for stateless authentication across the cluster.
Recording Service
High-throughput ingestion service. Streams chunks directly to S3/MinIO to ensure zero data loss.
02 / Async Communication
RabbitMQ Event Bus
Decouples services using Topic Exchanges.
`domain.events.#` handles fan-out.
03 / Real-time Edge
Notification Service
Dedicated WebSocket server consuming AMQP events and pushing updates to connected clients.
Media Worker
Offloads heavy FFmpeg processing from the API layer. Stitches chunks and masters audio.
Design Choice:
Why Hexagonal?
In CAS-735, we learned that mixing business logic with infrastructure concerns leads to unmaintainable monoliths.
We implemented Ports & Adapters to ensure our Domain Core remains pure. Our "Inbound Ports" (REST Controllers) and "Outbound Adapters" (Postgres Repositories, RabbitMQ Publishers) are pluggable. This allowed us to swap LocalStorage for S3 without touching a single line of business logic.