intermediate

RabbitMQ bindings

Используйте bindings, чтобы connect exchange routing decisions to queues и сделать delivery topology explicit and reviewable.

Binding связывает exchange с очередью по правилам маршрутизации. Direct требует точного совпадения routing key; topic — паттерны вроде `orders.*.created`; fanout игнорирует ключи; headers сопоставляет таблицы заголовков. Несколько bindings позволяют одному сообщению попасть в несколько очередей или маршрутизироваться выборочно.

Bindings должны быть версионируемой инфраструктурой: объявляйте в коде или IaC, ревьюйте в PR и избегайте тихого расхождения между окружениями. При смене маршрутизации сначала добавляйте новые bindings, затем удаляйте старые, чтобы не потерять сообщения.

На интервью: нарисуйте цепочку exchange → binding → queue, объясните доставку в несколько очередей и безопасную миграцию bindings.

Типовые ошибки: осиротевшие bindings после переименования очередей; пересекающиеся topic-паттерны; объявление bindings только при старте consumer; отсутствие владельца каждого binding.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Делайте bindings явными и проверяемыми.
  • Документируйте routing key или паттерн для каждого binding.
  • Планируйте изменения: сначала добавить, потом убрать.
  • Согласуйте владение bindings с границами сервисов.