Выбор ответа Senior Celery и очереди обновлено

Transactional outbox

Вопрос

Какую проблему решает паттерн transactional outbox?

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

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Атомарность «сохранить и опубликовать»: событие в таблице в той же транзакции. Без outbox возможны два сбоя: данные закоммичены, а публикация упала (событие потеряно), или событие ушло, а транзакция откатилась (событие о том, чего не было).

Варианты ответа

  1. Атомарность «сохранить и опубликовать»: событие в таблице в той же транзакцииправильный ответ
  2. Ускоряет отправку писем за счёт локальной очереди исходящих в базе
  3. Заменяет брокер базой данных, чтобы не поднимать RabbitMQ или Redis
  4. Шифрует сообщения в очереди перед публикацией в брокер для потребителей

Разбор

Без outbox возможны два сбоя: данные закоммичены, а публикация упала (событие потеряно), или событие ушло, а транзакция откатилась (событие о том, чего не было). С outbox событие сохраняется вместе с данными одной транзакцией, а отдельный релей читает таблицу и публикует в брокер с ретраями. Доставка получается «как минимум один раз», поэтому потребители идемпотентны.

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

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