Sobes.tech
Назад к вопросам
Middle
4

С какими брокерами сообщений работал? Расскажи про разницу между Kafka и RabbitMQ.

Компании, где спрашивали
Ecom

Ответ от нейросети

sobes.tech AI

Я работал с Kafka и RabbitMQ — двумя популярными брокерами сообщений, но с разной архитектурой и назначением.

Kafka:

  • Построена как распределённый журнал сообщений (лог).
  • Сообщения сохраняются на диске и доступны для чтения несколькими потребителями.
  • Поддерживает высокую пропускную способность и масштабируемость.
  • Идеальна для обработки потоков данных, аналитики, событийной обработки.
  • Потребители сами управляют смещением (offset), что даёт гибкость в чтении.

RabbitMQ:

  • Основан на очередях сообщений с поддержкой различных моделей маршрутизации (exchange, binding).
  • Сообщения доставляются и удаляются из очереди после подтверждения.
  • Поддерживает сложные сценарии маршрутизации и гарантии доставки.
  • Хорош для систем с требованием надёжной доставки и сложной логикой маршрутизации.

Основные отличия:

  • Kafka ориентирована на хранение и обработку больших потоков данных с возможностью повторного чтения.
  • RabbitMQ — классический брокер очередей для передачи сообщений с гарантией доставки.

Пример использования:

// Пример отправки сообщения в RabbitMQ
Channel channel = connection.createChannel();
channel.queueDeclare("task_queue", true, false, false, null);
String message = "Hello World";
channel.basicPublish("", "task_queue", MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());

В Kafka отправка и получение сообщений происходит через Producer и Consumer API с управлением offset.