Доставка: события публикации через RabbitMQ
Создадим «Доставку» — самостоятельный комплект обмена фактами публикации материала между владельцем API, каталогом и аудитом. Объявим topology, опубликуем событие, разделим направления подтверждений, добавим ограниченные повторы и разбор отказов. Завершим inbox-квитанцией, защитой редакций и transactional outbox.
Серия посвящена broker-обмену между сервисами. Redis и фоновые задачи и Temporal Workflow рассматривают другие модели работы. Запуск OpenSearch не требуется: наш event payload не является поисковой записью, для соединения проектов нужен отдельный адаптер. Предполагается знакомство с Python, HTTP, JSON и локальной транзакцией.
Python 3.13, RabbitMQ 4.3.6, Pika 1.3.2; SQLite входит в Python-runtime. Читатель предоставляет отдельный broker и устанавливает указанную зависимость в своей среде.
Одноузловые durable classic queues, локальные SQLite-эффекты, один relay, API только на loopback без входа. Ordinary TTL/DLX retry имеет отдельный предел сохранности. Серия не обещает exactly-once, универсальную at-least-once-доставку при всех отказах или автоматическую совместимость с OpenSearch.
Архив полного итогового проекта содержит реальные исходники, README, данные и карту этапов. Это один проект, не набор самостоятельных снимков уроков. Учебные приложения, broker/engine, базы, запросы, тесты и замеры при подготовке не запускались. Все результаты статей обозначены ожидаемыми.
Уроки и результаты
Восемь серий объединяет маршрут интерактивного веба.