В чём проблема такого решения (коммит после ответа внешнего REST-сервиса)?

Commit после REST-ответа не делает внешний вызов и локальное изменение атомарными. Внешняя операция могла завершиться, а локальная транзакция — упасть; timeout также не доказывает отказ.

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

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

Commit после REST-ответа не делает внешний вызов и локальное изменение атомарными. Внешняя операция могла завершиться, а локальная транзакция — упасть; timeout также не доказывает отказ.

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

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

Commit после REST-ответа не делает внешний вызов и локальное изменение атомарными. Внешняя операция могла завершиться, а локальная транзакция — упасть; timeout также не доказывает отказ.

Если речь о Kafka offset, повтор сообщения после сбоя может повторить внешний эффект. Нужны idempotency key, сохранённое состояние операции и сверка неопределённых результатов. Для БД применяют outbox и процесс согласования, а не держат долгую транзакцию во время сети. Точная схема зависит от того, что именно коммитится.

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

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

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

Подробнее