integration
Словарь ↗Повторная отправка вебхуков
Повторная отправка вебхуков — возможность заново прислать событие, которое получатель пропустил или обработал неверно: автоматически, в рамках политики ретраев, или по требованию из панели либо через API. Она нужна потому, что доставка не равна обработке: эндпоинт может вернуть 200 и упасть на записи в базу, деплой может уронить запросы в полёте, а авария может вывести час событий за пределы автоматических ретраев провайдера. Без повторной отправки единственный путь восстановления — полная сверка с API поставщика, что медленнее и часто неполно. Сторона получателя в этом контракте — идемпотентность. Любой механизм повтора гарантирует доставку хотя бы один раз, поэтому потребитель обязан обработать одно и то же событие дважды, не удвоив списание, не отправив второе письмо и не вставив дубликат строки. На практике это значит записывать идентификатор события провайдера и отклонять уже виденный, а саму запись делать по ключу, а не аддитивной. Важны ещё две детали. Порядок при повторе не сохраняется: событие, присланное на час позже, может прийти после более позднего события о том же объекте, поэтому обработчикам следует сверяться с текущим состоянием или смотреть на собственную метку времени или версию события, а не предполагать последовательность. И повторный запрос обязан проверяться ровно так же, как живой: эндпоинт повторов без проверки подписи — это неаутентифицированный вход в вашу систему. Командам, которые строят вебхуки, повторная отправка вместе с видимым журналом доставок — одна из самых ценных интеграционных функций, какие можно выпустить.
Похожие термины