Встречается на собеседованиях • сегодня

Как реализовать гарантированную отправку заявки с базы данных в очередь

Для гарантированной отправки заявок из БД в очередь можно использовать паттерн Outbox. Основные шаги:

  1. Запись заявки в БД и в таблицу-оутбокс в одной транзакции:
python
with db.transaction():
    save_application(application)
    add_to_outbox(application.id, 'queue_name')
  1. Отдельный процесс периодически проверяет оутбокс и отправляет сообщения:
python
def process_outbox():
    messages = get_unsent_messages()
    for msg in messages:
        try:
            queue.send(msg)
            mark_as_sent(msg.id)
        except Exception:
            log_error()

Ключевые моменты:

  • Атомарность записи в БД и оутбокс
  • Идемпотентность обработки (повторная отправка не должна дублировать эффект)
  • Механизм подтверждения доставки
  • Возможность повторной обработки при сбоях

Для надежности можно добавить dead letter queue для проблемных сообщений и мониторинг отставания оутбокса.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы