我如何在處理前將傳入的 webhook 訊息批次處理 3-5 秒

我如何在處理之前將傳入的 webhook 訊息批次處理 3-5 秒

@Anjali_sharma 歡迎!
每次 webhook 呼叫都是獨立的執行,所以單次執行無法原生「等待」下一條訊息。可靠的模式是由外部狀態(Redis)支援的防抖:每次收到傳入訊息時,將其附加到以發送者/工作階段為鍵的 Redis 列表,將目前執行的 ID 寫入標記鍵,等待 3 到 5 秒,然後檢查標記。如果仍然保持你的執行 ID,表示沒有新訊息到達,所以此次執行會提取整個列表、清空它並處理批次。如果標記已變更,表示新訊息取代了它,所以此次執行只需退出。節點順序

  1. Webhook
  2. Redis(RPUSH 訊息到每個工作階段的列表鍵)
  3. Redis(SET「上次執行」鍵為 {{ $execution.id }})
  4. 等待(3 到 5 秒)
  5. Redis(GET「上次執行」鍵)
  6. 如果({{ $json.value }} 等於 {{ $execution.id }})
  7. true 分支:Redis(LRANGE 讀取全部,然後 DEL 列表)並處理批次;false 分支:不執行任何操作

有一個現成的範本可以實現這個防抖: