Вступить в клуб →
средняявопросМикросервисы и обмен событиями

Оплата не прошла, а товар на складе так и остался зарезервирован

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

Как правильно устроить такой процесс?

  • Сага: у каждого шага есть компенсирующее действие, его запускают при сбое
  • Обернуть все три вызова в одну транзакцию базы данных сервиса заказов
  • Сначала списывать деньги, потом резервировать — тогда откатывать нечего
  • Резерв на складе не нужен: проверять наличие в момент оплаты

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела