Kafka ориентирован на партиционированный журнал с offsets и повторным чтением, RabbitMQ — на брокерную маршрутизацию и очереди с подтверждениями. Это разные исходные модели, а не абсолютное разделение задач.
Назовите брокеры, которые действительно использовали, и задачи: доставка фоновых заданий, интеграционные события, потоковая обработка или повторное чтение истории. Kafka и RabbitMQ выбирают по требованиям.
Такую структуру можно использовать для слоистой архитектуры: api — HTTP, application — сценарии, domain — бизнес-правила, inf — адаптеры БД, очередей, кеша и внешних API.
Celery выполняет и координирует фоновые задачи, RabbitMQ передаёт сообщения о них между приложением и worker-ами. Брокер отделяет постановку задачи от её выполнения.
RabbitMQ обычно используют как брокер маршрутизируемых сообщений и рабочих очередей, Kafka — как распределённый сохраняемый журнал событий с независимыми потребителями.
Оба варианта возможны: общий кластер RabbitMQ с изолированными очередями и правами либо отдельные брокеры. На интервью нужно описать фактическую схему своего проекта.
Outbox читает отдельный relay: фоновой процесс приложения, специальный сервис или CDC-коннектор. Kafka и RabbitMQ сами по себе не начинают читать произвольную таблицу вашей БД.
Нет, брокер нужен не всегда. Синхронный HTTP/gRPC подходит для запроса с немедленным результатом, а сообщения — для развязки по времени, буферизации и независимой обработки.
Outbox сохраняет бизнес-изменение и запись события в одной транзакции БД. Отдельный relay публикует только подтверждённые outbox-записи, поэтому rollback не оставляет событие для отправки.
Уточните реальные места и задачи, где работали с RabbitMQ. Если опыт был только в Agima, прямо скажите это и раскройте глубину работы вместо расширения списка компаний.
Kafka подходит для долговременного журнала событий с повторным чтением и независимыми потребителями. RabbitMQ часто выбирают для очередей работ и гибкой маршрутизации сообщений.
В декораторе ошибочны wrap, time.now и return в finally. Нужно functools.wraps, монотонный таймер и логирование без подмены результата; декоратор должен быть определён до применения.