🧩 Caso 07: 🦀 Rust -> 🌉 n8n -> 💎 Ruby#
Este eje tecnológico combina la robustez y el rendimiento de Rust con la elegancia sintáctica de Ruby, integrando un emisor fuertemente tipado con un receptor ágil basado en Sinatra.
🏗️ Arquitectura del Flujo#
- 📤 Origen:
main.rs(Rust 1.7x) - Emisor asíncrono de alto rendimiento. - 🌉 Puente: n8n (Webhook e Inyección HTTP)
- 📥 Destino:
app.rb(Ruby 3.2 / Sinatra) - 📁 Persistencia: Cassandra 4.1 (Columnar Distribuido)
🦀 Origen: Rust Safety Dispatcher#
El emisor en Rust garantiza la integridad de los datos antes del envío mediante su sistema de tipos:
- Lógica: Utiliza estructuras (
structs) y Serde para una serialización ultra rápida de los posts. - Tecnología: Cliente Reqwest asíncrono para despachos masivos sin bloqueo.
Consejo
Para poner en marcha este caso:
bashdocker-compose --profile case07 up -d
💎 Destino: Ruby Sinatra Receptor#
El receptor utiliza Sinatra para gestionar los eventos con una sintaxis limpia y minimalista:
- Tecnología: Sinatra DSL ejecutándose sobre el servidor Puma.
- Persistencia: Almacenamiento distribuido en Cassandra, ideal para flujos de datos de alta escritura.
- Dashboard: Interfaz dinámica generada con plantillas ERB.
🛡️ Guardrails (Resiliencia)#
Este caso implementa defensas para garantizar entregas seguras en flujos de datos intensos:
- 🔄 Reintentos Automáticos: n8n reintenta el envío hasta 3 veces con backoff si el receptor Ruby no responde a tiempo.
- 📥 Dead Letter Queue (DLQ): Los mensajes fallidos se registran en una cola persistente para evitar la pérdida de eventos críticos.
- ⚡ Escrituras Masivas: Cassandra permite absorber ráfagas de datos sin degradar la respuesta del receptor Ruby.
🚦 Verificación y Acceso#
- 🌐 Dashboard: http://localhost:8087
- ⚙️ API Endpoint:
POST /webhook - 📂 Cluster: El estado del anillo puede inspeccionarse con herramientas nativas de Cassandra.
Desarrollado como parte del Social Bot Scheduler v4.0