Раздел 45 · Python backend: Тарбадель

Outbox и inbox: хотя бы раз и не больше раза

middle-senior~25 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Кельса не говорит, откуда в 03:00 дубли. Смотрит на часы и молчит дольше, чем нужно.

Посмотри, как заказы отправляли события в прошлом уроке:

async with sessions.begin() as session:
    session.add(order)
envelope = placed(order, clock())
await amqp.publish(rabbit, envelope)
await journal.publish(kafka, envelope, seq=order.seq)

Commit в базу, потом публикация в два брокера. Это та самая двойная запись из урока 197: две системы, общей транзакции нет. Брокер лежит, и заказ есть, а события нет. Процесс убили между строками, то же самое. В Кэш-рынке ты закрыл эту щель outbox-ом внутри одного приложения. Сегодня закроешь её между сервисами, с двумя брокерами и с получателем, который списывает деньги.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.