Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про RabbitMQ: kafka, rabbitmq, messaging

Чем отличается Kafka от RabbitMQ по модели гарантированной доставки сообщений?

Вопрос проверяет знание очередей сообщений и их различий в гарантиях доставки.

Короткий ответ

RabbitMQ ориентирован на at-most-once и at-least-once, с подтверждением доставки через ack/nack. Kafka проектировалась для at-least-once, а с идемпотентностью и transactional producer — для exactly-once.

Длинный ответ

RabbitMQ:

  • Сообщение подтверждается ack после обработки.

  • Если consumer упал до ack → сообщение доставят снова (at-least-once).

  • Можно включить auto-ack → риск потери (at-most-once).

  • Exactly-once нет.

Kafka:

  • Сообщение хранится на диске.

  • Consumer управляет offset.

  • По умолчанию — at-least-once (offset после обработки).

  • Можно добиться exactly-once с transactional producer и idempotent consumer.

Пример (Kafka):

producer := kafka.NewProducer(config)
producer.InitTransactions()
producer.BeginTransaction()
producer.Produce(msg)
producer.CommitTransaction()

Вывод:

  • RabbitMQ — надёжная очередь, но без exactly-once.

  • Kafka — стриминговая платформа, где exactly-once достижим, но с накладными расходами.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • RabbitMQ

    RabbitMQ

  • Kafka

    Kafka

Ключевые слова

#kafka

#rabbitmq

#messaging

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.