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

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

Компании, где спрашивали
СБК ПАРУС

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

sobes.tech AI

RabbitMQ и Kafka — это две популярные системы обмена сообщениями, но они имеют разные архитектурные подходы и сценарии использования.

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

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

Пример отличий:

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

В C# для работы с RabbitMQ часто используют библиотеку RabbitMQ.Client, для Kafka — Confluent.Kafka.

// Пример отправки сообщения в RabbitMQ
var factory = new ConnectionFactory() { HostName = "localhost" };
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
channel.QueueDeclare(queue: "task_queue", durable: true, exclusive: false, autoDelete: false, arguments: null);
var body = Encoding.UTF8.GetBytes("Hello RabbitMQ");
channel.BasicPublish(exchange: "", routingKey: "task_queue", basicProperties: null, body: body);
// Пример отправки сообщения в Kafka
var config = new ProducerConfig { BootstrapServers = "localhost:9092" };
using var producer = new ProducerBuilder<Null, string>(config).Build();
await producer.ProduceAsync("topic", new Message<Null, string> { Value = "Hello Kafka" });