Кельса не говорит, откуда в 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 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.