По порядку Senior Асинхронные интеграции и брокеры обновлено
Шаги transactional outbox
Вопрос
Расставь шаги работы transactional outbox по порядку.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1Закоммитить транзакцию
- 2Сохранить заказ в таблицу orders
- 3Начать локальную транзакцию
- 4Фоновый процесс читает новые записи outbox
- 5Записать событие OrderCreated в таблицу outbox
- 6Процесс публикует событие в брокер и помечает запись отправленной
- 7Потребитель идемпотентно обрабатывает событие
Показать ответ и разбор
Коротко
Заказ и событие попадают в базу атомарно, а доставка в брокер происходит после коммита. Если публикатор упадёт после отправки, но до пометки, событие уйдёт ещё раз, поэтому потребитель обязан быть идемпотентным.
Правильный порядок
- 1Начать локальную транзакцию
- 2Сохранить заказ в таблицу orders
- 3Записать событие OrderCreated в таблицу outbox
- 4Закоммитить транзакцию
- 5Фоновый процесс читает новые записи outbox
- 6Процесс публикует событие в брокер и помечает запись отправленной
- 7Потребитель идемпотентно обрабатывает событие
Разбор
Заказ и событие попадают в базу атомарно, а доставка в брокер происходит после коммита. Если публикатор упадёт после отправки, но до пометки, событие уйдёт ещё раз, поэтому потребитель обязан быть идемпотентным.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.