Перейти к основному содержимому
Нормативная версия документации - английская

Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.

Соединение

AMQP 1.0 соединяет два контейнера одним соединением. Внутри соединения идут сеансы, а внутри каждого сеанса - связи, которые переносят сообщения в одну сторону.

Одно соединение между сервисом и брокером: сеанс для издателей, сеанс на каждую подписку и связи внутри нихОдно TCP-соединениеСеанс: публикацияСеанс: ordersКонтейнер брокераКонтейнер сервисаid контейнера ruststreamОкно сеансаобщее для издателейОтправляющая связьцель receiptsодна на адресОкно сеансаодной подпискиПринимающая связьисточник ordersкредит 256Узел receiptsочередь или темаУзел ordersочередь или темаИмена связей уникальны в пределах соединения; крейт выводитих из id контейнера, например ruststream-receiver-3
Схема текстом
  1. Одно TCP-соединение: Окно сеанса общее для издателей; Отправляющая связь цель receipts одна на адрес; Окно сеанса одной подписки; Принимающая связь источник orders кредит 256
  2. Сеанс: публикация: Окно сеанса общее для издателей; Отправляющая связь цель receipts одна на адрес
  3. Сеанс: orders: Окно сеанса одной подписки; Принимающая связь источник orders кредит 256
  4. Контейнер брокера: Узел receipts очередь или тема; Узел orders очередь или тема
  5. Контейнер сервиса id контейнера ruststream → Одно TCP-соединение: TLS, SASL, open
  6. Отправляющая связь цель receipts одна на адрес → Узел receipts очередь или тема: передачи
  7. Узел orders очередь или тема → Принимающая связь источник orders кредит 256: передачи
  8. Имена связей уникальны в пределах соединения; крейт выводит их из id контейнера, например ruststream-receiver-3

Контейнер - это участник протокола: сервис - один контейнер, брокер - другой. Сервис представляется идентификатором контейнера ruststream, если container_id не задаёт другой. Консоль брокера показывает соединение сервиса и его связи под этим идентификатором.

Соединение - это один TCP-сокет. На URL amqps:// оно начинается с TLS. Затем SASL аутентифицирует сервис механизмом PLAIN, ANONYMOUS или EXTERNAL, и два контейнера обмениваются кадрами open.

Сеанс - это пара каналов внутри соединения. У каждого канала есть окно, которое ограничивает число передач, идущих по нему одновременно. Крейт начинает один сеанс, общий для всех издателей соединения, и ещё по одному на каждую подписку. Медленная подписка заполняет своё окно и никогда не занимает окно издателей или другой подписки.

У связи есть имя, и она переносит сообщения в одном направлении. Отправляющая связь идёт от сервиса к узлу, а принимающая связь - от узла к сервису. Каждый конец связи - терминус, и терминус на стороне брокера называет узел его адресом. У связи есть и собственный кредит, который показывает страница Передачи.

Стандарт определяет кадры протокола, но не смысл адреса. Будет ли orders очередью или темой, решает брокер, как показывает страница Адреса.

Эта модель взята из спецификации (транспорт, безопасность).