Diseña e implementa un sistema de notificaciones en tiempo real que combine REST API con WebSockets, cola de mensajes con Redis pub/sub, y retry con backoff exponencial. Incluye tests de integración y documenta las decisiones arquitectónicas.
Requisitos
- REST API para gestionar suscripciones y consultar historial de notificaciones
- WebSocket server para entrega en tiempo real con reconexión automática
- Cola de mensajes con Redis pub/sub para desacoplar productores y consumidores
- Retry con backoff exponencial para entregas fallidas (max 5 intentos)
- Tests de integración que cubran el flujo completo (envío → cola → entrega)
Ejemplos
Entrada:
POST /api/notifications { "userId": "123", "type": "order_update", "payload": { "orderId": "456", "status": "shipped" } }
Salida:
Notificación encolada en Redis, entregada via WebSocket al usuario conectado, con confirmación de recepción
Tecnologías aceptadas
- Node.js + Socket.io/ws
- Python + FastAPI + websockets
- Go + gorilla/websocket
- TypeScript + NestJS
- Elixir + Phoenix Channels