← Назад к базе знаний

Идемпотентность

Идемпотентность — определение в глоссарии KZSalesHub

Свойство операции давать один и тот же результат при повторном выполнении с теми же данными.

Почему это важно здесь

Большинство систем обмена гарантируют доставку «хотя бы один раз», а не «ровно один раз». Без защиты от повторов появляются задвоенные списания, начисления и отгрузки.

Пример

Сообщение о платеже пришло дважды из-за повторной попытки. Система распознаёт его по идентификатору и не проводит второе списание.

Разбор на примере

Запрос «создать платёж на 1000 тенге» при повторной отправке из-за сбоя сети может создать второй платёж. Идемпотентный запрос с уникальным ключом создаст платёж один раз, сколько бы его ни повторяли.

Почему важно

В интеграциях повторы неизбежны: таймауты, сбои, повторная отправка сообщений. Без идемпотентности появляются дубли заказов, платежей и записей.

Что спросить у поставщика

Поддерживает ли API ключи идемпотентности и как обрабатываются повторные события.

Почему это важно

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

ОперацияИдемпотентна?Риск при повторе
Получить данные о клиентеДаНет
Установить статус «оплачен»ДаНет
Создать новый заказНет, если не защищеноДубликат заказа
Списать деньгиНет, если не защищеноДвойное списание

Как обеспечивают

  • Уникальный ключ операции: повтор с тем же ключом не создаёт новую запись.
  • Проверка «уже выполнено» перед выполнением.
  • Очереди с гарантией однократной обработки.

Частые вопросы

Нужно ли продавцу это знать?
Да, на уровне вопроса инженеру: что будет, если запрос повторится? Это частая причина инцидентов после запуска.
Где особенно критично?
Платежи, заказы, складские операции.
Подробнее
В материале очереди и события.

Рядом

Очередь сообщений, Событийная архитектура, Сверка данных

Материал обновлён 17 октября 2026

Материал оказался полезным?