Sobes.tech
Back to questions
Senior
7

Что такое брокеры сообщений? Какие знаете? Чем RabbitMQ отличается от Kafka?

Companies where asked
техвил

Answer from AI

sobes.tech AI

Брокеры сообщений — это системы, которые обеспечивают передачу сообщений между приложениями или сервисами, позволяя им обмениваться данными асинхронно и надежно.

Популярные брокеры:

  • RabbitMQ
  • Apache Kafka
  • ActiveMQ
  • Amazon SQS

Отличия RabbitMQ от Kafka:

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

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

Ключевые различия:

Характеристика RabbitMQ Kafka
Модель Очереди и обменники (exchanges) Лог с разделами (partitions)
Хранение сообщений Кратковременное, пока не прочитаны Долговременное, с возможностью повторного чтения
Подход к доставке Push (отправка сообщений) Pull (клиенты сами читают сообщения)
Использование Сложная маршрутизация, RPC Потоковая обработка, аналитика

Пример использования RabbitMQ на Go (с помощью библиотеки amqp):

conn, _ := amqp.Dial("amqp://guest:guest@localhost:5672/")
ch, _ := conn.Channel()
q, _ := ch.QueueDeclare("task_queue", true, false, false, false, nil)
body := "Hello World"
ch.Publish("", q.Name, false, false, amqp.Publishing{
  ContentType: "text/plain",
  Body:        []byte(body),
})

Kafka в Go обычно используют через библиотеку sarama или confluent-kafka-go для работы с топиками и партициями.