Выбор ответа Senior Celery и очереди обновлено
Transactional outbox
Вопрос
Какую проблему решает паттерн transactional outbox?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Атомарность «сохранить и опубликовать»: событие в таблице в той же транзакции. Без outbox возможны два сбоя: данные закоммичены, а публикация упала (событие потеряно), или событие ушло, а транзакция откатилась (событие о том, чего не было).
Варианты ответа
- Атомарность «сохранить и опубликовать»: событие в таблице в той же транзакцииправильный ответ
- Ускоряет отправку писем за счёт локальной очереди исходящих в базе
- Заменяет брокер базой данных, чтобы не поднимать RabbitMQ или Redis
- Шифрует сообщения в очереди перед публикацией в брокер для потребителей
Разбор
Без outbox возможны два сбоя: данные закоммичены, а публикация упала (событие потеряно), или событие ушло, а транзакция откатилась (событие о том, чего не было). С outbox событие сохраняется вместе с данными одной транзакцией, а отдельный релей читает таблицу и публикует в брокер с ретраями. Доставка получается «как минимум один раз», поэтому потребители идемпотентны.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.