Как интегрировали внешний сервис проверки чеков через REST API с Circuit Breaker и RabbitMQ, чтобы исключить потерю данных при сбоях?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Circuit Breaker временно прекращает обращения к неработающему внешнему сервису, но не хранит задания. За сохранность отвечает БД и корректная доставка: durable-очередь, подтверждения публикации и подтверждение обработки после фиксации результата. Timeout внешнего вызова не доказывает, что операция не выполнена, поэтому нужен ключ идемпотентности или проверка статуса по идентификатору чека. Неисправимые задания сохраняют для разбора, а не бесконечно повторяют. На собеседовании описывайте эту схему как вариант решения, если фактически использовали другую архитектуру.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее