Kafka vs RabbitMQ
Оба — брокеры сообщений, но устроены принципиально по-разному и подходят под разные задачи.
| Kafka | RabbitMQ | |
|---|---|---|
| Модель | журнал событий (log) | классическая очередь |
| Сообщение после обработки | остаётся (хранится по TTL) | удаляется |
| Пропускная способность | очень высокая, миллионы сообщений/сек | высокая, но обычно ниже Kafka |
| Порядок сообщений | гарантирован внутри партиции | гарантирован внутри очереди |
| Сложность маршрутизации | простая (топик → consumer) | гибкая (exchange-типы — см. тему «Exchange, Queue, Binding») |
| Типичное применение | event streaming, аналитика, журналы событий | классические задачи и очереди заданий |
Копнуть глубже
Когда выбирать Kafka:
- нужна высокая пропускная способность (миллионы сообщений в секунду);
- нужно, чтобы несколько разных потребителей читали одни и те же события независимо;
- важна история событий (event sourcing, аналитика по прошлым событиям).
Когда выбирать RabbitMQ:
- классическая задача “поставить в очередь и обработать” (отправка email, генерация отчётов);
- нужна гибкая маршрутизация сообщений по сложным правилам;
- объёмы сообщений умеренные, простота настройки важнее предельной пропускной способности.
На практике выбор часто определяется уже существующей инфраструктурой компании, а не только теоретическими преимуществами — если в команде уже есть опыт с Kafka для других задач, разумно использовать его и для новой задачи, не вводя ещё одну технологию без явной необходимости.
🎤 Закрыл тему, если можешь объяснить:
• ключевые различия Kafka и RabbitMQ по модели хранения сообщений;
• в каких сценариях выбрать каждый из них (если дошёл до 2-го слоя).
• в каких сценариях выбрать каждый из них (если дошёл до 2-го слоя).