По порядку Senior Асинхронные интеграции и брокеры обновлено

Шаги transactional outbox

Вопрос

Расставь шаги работы transactional outbox по порядку.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Закоммитить транзакцию
  2. 2
    Сохранить заказ в таблицу orders
  3. 3
    Начать локальную транзакцию
  4. 4
    Фоновый процесс читает новые записи outbox
  5. 5
    Записать событие OrderCreated в таблицу outbox
  6. 6
    Процесс публикует событие в брокер и помечает запись отправленной
  7. 7
    Потребитель идемпотентно обрабатывает событие
Показать ответ и разбор

Коротко

Заказ и событие попадают в базу атомарно, а доставка в брокер происходит после коммита. Если публикатор упадёт после отправки, но до пометки, событие уйдёт ещё раз, поэтому потребитель обязан быть идемпотентным.

Правильный порядок

  1. 1
    Начать локальную транзакцию
  2. 2
    Сохранить заказ в таблицу orders
  3. 3
    Записать событие OrderCreated в таблицу outbox
  4. 4
    Закоммитить транзакцию
  5. 5
    Фоновый процесс читает новые записи outbox
  6. 6
    Процесс публикует событие в брокер и помечает запись отправленной
  7. 7
    Потребитель идемпотентно обрабатывает событие

Разбор

Заказ и событие попадают в базу атомарно, а доставка в брокер происходит после коммита. Если публикатор упадёт после отправки, но до пометки, событие уйдёт ещё раз, поэтому потребитель обязан быть идемпотентным.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.