Всем привет! Решил кратенько описать частый вопрос на собеседованиях Kafka vs Rabbit, что и когда лучше использовать, ведь данный вопрос наверняка достал многих.
Кратенько о Kafka:
Производительность: данный брокер имеет PULL модель выгрузки сообщений потребителям, благодаря такой модели взаимодействия можно равномернее распределить нагрузку, однако задержка на получение сообщений выше
Упорядоченность сообщений: Имеет упорядоченность сообщений в рамках одной партиции
Хранение сообщений: для каждой партиции сообщения сохраняются в отдельном файлике и возможна повторная выгрузка
Маршрутизация: взаимодействие идет через топики, а маршрутизация через consumer group
Простота настройки: Имеет более сложную настройку
Кратенько о RabbitMQ:
Производительность: данный брокер имеет PUSH модель отправки сообщений, благодаря такой модели, задержка между получением новых потребителем, ниже, чем у Kafka. Однако нужно учесть, что потребитель может не успевать обрабатывать такой поток сообщений и будет перегрузка
Упорядоченность сообщений: по умолчанию упорядоченности сообщений нет и необходимо настраивать дополнительно. Также из-за PUSH модели отправки сообщений, невозможно распределить нагрузку равномерно
Хранение сообщений: брокер не хранит сообщения и поэтому имеется риск утери и невозможность повторной выгрузки
Маршрутизация: благодаря Exchagne, Queue позволяет настроить более гибкую маршрутизацию
Простота настройки: Имеет более простую настройки нежели Kafka