Порівняння

Kafka чи RabbitMQ

Kafka це розподілений журнал подій, RabbitMQ це класичний брокер повідомлень. Різна модель, різні задачі.

КритерійApache KafkaRabbitMQ
МодельНезмінний журнал по партиціях, споживачі читають за offsetЧерги й обміни (exchanges), брокер штовхає повідомлення споживачам
ЗберіганняПовідомлення лишаються за часом або розміром, можна перечитатиПовідомлення зникають після підтвердження (ack), хоча є Streams
Пропускна здатністьДуже висока, сотні тисяч і мільйони подій на секунду на кластеріДесятки тисяч на секунду на вузлі, нижча затримка на одне повідомлення
МаршрутизаціяПрості топіки й партиції, логіку маршрутів робить застосунокГнучка: direct, topic, fanout, headers, пріоритети, TTL, dead letter
Складність експлуатаціїВища: кластер, партиції, ребаланс (з KRaft ZooKeeper не потрібен)Нижча для малих систем, кластер потребує уваги
Ліцензія і власникApache-2.0, Apache Software FoundationMPL-2.0, Broadcom (VMware)
ЕкосистемаKafka Connect, Kafka Streams, Schema Registry, Flink, SparkКлієнти майже для всіх мов, AMQP, MQTT, STOMP плагіни
Найкраще дляПотоки подій, аналітика, event sourcing, інтеграція багатьох системФонові задачі, RPC через черги, складна маршрутизація

Обирайте Apache Kafka, коли

  • Подію треба читати кількома незалежними споживачами і перечитувати.
  • Обсяги великі, потрібен потоковий аналіз.
  • Будуєте event-driven архітектуру з журналом як джерелом правди.

Обирайте RabbitMQ, коли

  • Потрібні черги задач з ack, повторами і dead letter.
  • Потрібна гнучка маршрутизація та пріоритети.
  • Команда мала, обсяги помірні, хочеться простіше.

Підсумок

Для черги фонових задач беріть RabbitMQ, для потоку подій з перечитуванням беріть Kafka. Kafka як чергу задач використовувати можна, але ви платите складністю за можливості, які не використаєте.

Що порівнюємо

Логотипи належать їхнім власникам і використані лише для ідентифікації. Іконки: Simple Icons (CC0), Devicon (MIT).

Розділи платформи