Petr Volobuev | Technology RadarPetr Volobuev | Technology Radar

Rabbit MQ

mq
Using

For the sake of easier maintenance — plus the low risk of losing messages and the small number of rollback chains in the project — we're leaning toward Rabbit rather than Kafka.

Trying

RabbitMQ is a message broker that lets services talk asynchronously: one service publishes messages, another one (or several) consumes them. The classic scenarios — microservices, background jobs, integrations, "decoupling" systems in time and load.

Key entities:

  • Exchange — the entry point for messages (routing).
  • Queue — a message buffer for consumers.
  • Binding — the rule for "which messages from an exchange land in which queue".
  • Routing key — the string an exchange uses to pick the queue(s).

Exchange types (the most common memory cheat sheet):

  • direct — exact routing key match
  • topic — patterns (a.*.c, a.#)
  • fanout — to all queues
  • headers — by headers

Rabbit is really easy to deploy and configure. Connecting to it and working with it is just as simple — the main thing is to understand the point of Exchanges and what they are.