Сохраняйте состояние каждого этапа и его результат в устойчивом хранилище. При повторной доставке worker продолжает с незавершённого шага, а успешно выполненные этапы проверяет по сохранённому статусу.
Как реализовать ретрай через брокер для долгого многоэтапного процесса, чтобы не повторять уже успешно выполненные тяжёлые шаги?
Сохраняйте состояние каждого этапа и его результат в устойчивом хранилище. При повторной доставке worker продолжает с незавершённого шага, а успешно выполненные этапы проверяет по сохранённому статусу.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сохраняйте состояние каждого этапа и его результат в устойчивом хранилище. При повторной доставке worker продолжает с незавершённого шага, а успешно выполненные этапы проверяет по сохранённому статусу.
Сообщение содержит ID процесса, а не единственную копию его состояния. Переходы защищают версией или lease, внешние действия — idempotency key. Фиксацию этапа и постановку следующего сообщения связывают надёжно, например через outbox. Для ошибок задают backoff, предел попыток и ручной разбор. Если сбой произошёл после внешнего действия, но до записи успеха, нужна сверка результата, иначе тяжёлый шаг может повториться.