Conector Rate Limiter
Descripción General
Sección titulada «Descripción General»El conector Rate Limiter limita la velocidad a la que las cargas fluyen por un pipeline usando un algoritmo token-bucket. Admite dos estrategias: descartar el exceso de cargas o ponerlas en cola para entrega posterior.
Tipo de Conector: MeddleRateLimiter
Estrategia Drop
Sección titulada «Estrategia Drop»Las cargas en exceso se descartan inmediatamente y se reportan en el canal de errores.
{ "type": "MeddleRateLimiter", "config": { "maxRate": 10, "burstSize": 20, "strategy": "drop" }}Permite hasta 10 eventos por segundo, con ráfagas de hasta 20. Cuando el cubo está vacío, las cargas entrantes se descartan.
Estrategia Queue
Sección titulada «Estrategia Queue»Las cargas en exceso se almacenan en una cola acotada y se vacían a la velocidad configurada.
{ "type": "MeddleRateLimiter", "config": { "maxRate": 5, "burstSize": 5, "strategy": "queue", "queueSize": 200 }}Si la cola está llena, las cargas adicionales se reportan en el canal de errores como un desbordamiento.
Parámetros de Configuración
Sección titulada «Parámetros de Configuración»- maxRate (obligatorio, > 0): Rendimiento sostenido en eventos por segundo (float)
- burstSize (obligatorio, > 0): Capacidad máxima de ráfaga del cubo de tokens
- strategy (obligatorio):
dropoqueue - queueSize: Capacidad de la cola para la estrategia
queue(por defecto100)
Semántica del Token-Bucket
Sección titulada «Semántica del Token-Bucket»- El cubo contiene como máximo
burstSizetokens y se rellena amaxRatetokens por segundo - Cada carga consume un token
- Bajo
drop, una carga se reenvía inmediatamente si hay un token disponible; de lo contrario se descarta - Bajo
queue, la carga se encola y luego se reenvía en cuanto se concede el siguiente token. El desbordamiento ocurre cuando la cola está llena.
Casos de Uso
Sección titulada «Casos de Uso»- Proteger APIs descendentes con límites de velocidad estrictos (ej. endpoints SaaS de terceros)
- Suavizar entradas en ráfaga antes de escribir en una base de datos
- Limitar la frecuencia de notificaciones para evitar tormentas de alertas
- Estrangular webhooks salientes para mantenerse bajo las cuotas del proveedor
Ejemplo: Suavizar un Flujo MQTT con Ráfagas
Sección titulada «Ejemplo: Suavizar un Flujo MQTT con Ráfagas»{ "type": "MeddleRateLimiter", "config": { "maxRate": 50, "burstSize": 100, "strategy": "queue", "queueSize": 1000 }}Sostiene 50 eventos/seg con un margen de ráfaga de 100 eventos. Hasta 1000 eventos pueden encolarse durante picos de tráfico antes del desbordamiento.
Ejemplo: Descartar Alertas Excesivas
Sección titulada «Ejemplo: Descartar Alertas Excesivas»{ "type": "MeddleRateLimiter", "config": { "maxRate": 1, "burstSize": 1, "strategy": "drop" }}Como máximo se reenvía una carga por segundo; cualquier exceso se descarta silenciosamente (registrando un error).
Mejores Prácticas
Sección titulada «Mejores Prácticas»- Ajusta
maxRateal límite documentado del consumidor descendente más lento, con margen - Usa
dropcuando la frescura importa más que la completitud (ej. dashboards en vivo) - Usa
queuecuando no se puede perder ninguna carga; dimensiona la cola para absorber las duraciones de ráfaga esperadas - Monitoriza el canal de errores — las cargas descartadas/desbordadas se reportan allí
- Combina con On Change para eliminar primero duplicados y luego limitar la velocidad de los eventos únicos
Conectores Relacionados
Sección titulada «Conectores Relacionados»- On Change - Descartar cargas sin cambios
- Aggregation - Resumen basado en ventanas
- Cron - Emisión guiada por tiempo