Определите идентичность операции

Выберите стабильный ключ: например, ID заказа вместе с типом действия. Сохраните его до отправки и защитите уникальными ограничениями в базе. Проверка «существует ли запись» без такого ограничения может проиграть двум одновременным запросам. Повтор той же операции должен возвращать уже известный результат.

Далее по теме: Дубликаты заявок в CRM: повторная доставка или новое обращение.

Разделите ошибки и неизвестный результат

Ошибка валидации требует исправления данных, а временная недоступность – контролируемого повтора. Если результат неизвестен, сначала проверьте внешнюю систему по переданному ID, если ее API позволяет. Не предполагайте, что любой провайдер поддерживает заголовок Idempotency-Key: это нужно подтвердить в его документации.

Далее по теме: OpenCart и KeyCRM: проверка передачи заказа.

Проверьте конкурентное исполнение

На тестовой среде отправьте два одинаковых события одновременно, повторите их после тайм-аута и перезапуска worker. Ожидаемый результат: одна бизнес-операция и понятный журнал попыток. Определите срок хранения ключей, количество повторов и путь ручного разбора неразрешенных случаев.

Далее по теме: ИИ в бизнес-процессе: как проверить пользу до полной автоматизации.

Достаточно ли автоматического retry HTTP-клиента?

Нет. Он повторяет транспортный запрос, но без отдельных правил не гарантирует, что бизнес-действие выполнится только один раз.

Документация и источники