Cómo agrupar mensajes de webhook entrantes durante 3-5 segundos antes de procesarlos

¿Cómo agrupo los mensajes webhooks entrantes durante 3-5 segundos antes de procesarlos?

¡Hola @Anjali_sharma, bienvenido!
Cada llamada webhook es su propia ejecución, así que una única ejecución no puede “esperar” de forma nativa los siguientes mensajes. El patrón confiable es un debounce respaldado por estado externo (Redis): en cada mensaje entrante, añádelo a una lista de Redis con clave por remitente/sesión, escribe el ID de la ejecución actual en una clave marcadora, espera 3 a 5 segundos, y luego comprueba la marcadora. Si aún contiene tu ID de ejecución, no llegó ningún mensaje más reciente, así que esta ejecución obtiene toda la lista, la borra y procesa el lote. Si la marcadora cambió, un mensaje más reciente tomó el relevo, así que esta ejecución simplemente sale. Orden de nodos

  1. Webhook
  2. Redis (RPUSH el mensaje en una clave de lista por sesión)
  3. Redis (SET una clave de “última ejecución” a {{ $execution.id }})
  4. Wait (3 a 5 segundos)
  5. Redis (GET la clave de “última ejecución”)
  6. If ({{ $json.value }} equals {{ $execution.id }})
  7. rama true: Redis (LRANGE para leer todo, luego DEL la lista) y procesar el lote; rama false: no hacer nada

Hay una plantilla lista que implementa exactamente este debounce: