В чем разница между Kafka и RabbitMQ

«В чем разница между Kafka и RabbitMQ» — вопрос из категории Брокеры сообщений, который задают на 33% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

RabbitMQ (AMQP):

  • Использует модель очередей и обменников (exchanges).
  • Подходит для сложных маршрутизаций (routing keys, dead-letter queues).
  • Гарантирует доставку (acknowledgments).
  • Лучше для RPC и задач, где важна последовательность.

Kafka:

  • Работает как распределенный лог-журнал (append-only).
  • Поддерживает высокую пропускную способность и долгосрочное хранение.
  • Масштабируется горизонтально (партиции, реплики).
  • Идеален для стриминга и обработки событий в реальном времени.

Пример подписки в Kafka (Java):

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "test-group");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("topic"));

Выбор зависит от задачи: RabbitMQ для сложной маршрутизации, Kafka — для потоковой обработки больших данных.