> В чем разница между Kafka и RabbitMQ (Go, Python)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Wildberries, Lamoda

Стек: Go, Python

> Пример ответа

Основное различие между Kafka и RabbitMQ - в модели передачи сообщений и сценариях использования. RabbitMQ - это классический брокер сообщений, работающий по модели очередей с поддержкой различных протоколов (AMQP, MQTT, STOMP). Он идеален для задач, где важна гарантированная доставка каждого сообщения одному потребителю, например, в микросервисной архитектуре с Go или Python для обработки фоновых задач (celery + RabbitMQ). Kafka же - это распределенная платформа потоковой обработки, построенная на логах (commit log). Она хранит сообщения в топиках с возможностью повторного чтения, что делает её незаменимой для event sourcing, логов, метрик и real-time аналитики.

На практике: в Go-проекте с RabbitMQ вы будете использовать библиотеку streadway/amqp для отправки и получения сообщений с подтверждениями (ack), а в Kafka - confluent-kafka-go или segmentio/kafka-go для работы с партициями и оффсетами. RabbitMQ лучше подходит для сложной маршрутизации (direct, topic, fanout exchanges) и гарантированной доставки с низкой задержкой, а Kafka - для высокой пропускной способности (миллионы сообщений в секунду) и долговременного хранения данных. В Python аналогично: pika для RabbitMQ, confluent-kafka для Kafka.

Выбор зависит от задачи: если нужно надежно передать задание одному воркеру - RabbitMQ; если требуется обрабатывать потоки событий с возможностью replay - Kafka.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью