RabbitMQ

RabbitMQ — брокер сообщений, реализация AMQP 0-9-1. Написан на Erlang (2007). Traditional message queue: producer → exchange → queue → consumer. В отличие от Kafka, сообщения удаляются после ack.

Модель

[Producer] → [Exchange] → routing → [Queue] → [Consumer]
                            │
                       (по типу exchange)

Типы exchange

ТипКак роутит
directпо точному routing_key
fanoutво ВСЕ привязанные очереди
topicпо паттерну logs.*.error
headersпо matchу header'ов

Пример роутинга

# binding: queue "errors" ← exchange "logs" с routing_key "*.error"
publish(exchange="logs", routing_key="app.error", body="failed")
  → попадает в queue "errors"

publish(exchange="logs", routing_key="app.info", body="ok")
  → в "errors" НЕ попадает

Гарантии

Dead letter

Сообщение отклонено (nack), TTL истёк, очередь переполнена — уходит в DLX (dead letter exchange). Классика для ретраев и разбора инцидентов.

Кластеризация

RabbitMQ vs Kafka

RabbitMQKafka
Модельочередь (удаляет)лог (хранит)
Throughput50k-100k msg/s1M+ msg/s
Роутинггибкийпо partition/key
Message priorityданет
Delayed deliverypluginнет
Реплейнетда
Комуtask queues, RPCevent streaming, log

Плагины

См. также

← на главную