Вступ до протоколу AMQP
AMQP (Advanced Message Queuing Protocol) — це стандартний протокол прикладного рівня, який надає уніфіковані сервіси обміну повідомленнями, і є відкритим стандартом для протоколів на рівні додатків, розроблених для повідомленого проміжного програмного забезпечення. AMQP — це мережевий протокол для передачі асинхронних повідомлень між процесами.
Клієнти та проміжне програмне забезпечення на основі цього протоколу можуть доставляти повідомлення без обмежень різними продуктами клієнта/проміжного програмного забезпечення, різними мовами розробки тощо.
Основні характеристики AMQP — орієнтація на повідомлення, чергу, маршрутизація (включаючи peer-to-peer та публікацію/підписку), надійність і безпека. AMQP контролює поведінку постачальників повідомлень і клієнтів, забезпечуючи справжню сумісність між різними постачальниками.
Маршрутні повідомлення
В архітектурі AMQP будь-яка успішна маршрутизація повідомлень складається з трьох частин:
- Обмін: Де продюсери публікують повідомлення
- Черги: Де споживачі отримують повідомлення
- Зв'язки: Як повідомлення маршрутизуються від комутатора до конкретної черги
Обміни та зв'язки
То як же повідомлення потрапляє до черги? Коли ви хочете передати повідомлення споживачу, спочатку потрібно надіслати його обміннику. Потім, виходячи з певних правил або ключів маршрутизації, RabbitMQ вирішує, до якої черги слід доставляти повідомлення.
Правила — або ключі маршрутизації — дозволяють прив'язати чергу до біржі. RabbitMQ намагатиметься зіставити ключ маршрутизації в повідомленні з ключем, використаним у зв'язку. Повідомлення потім доставляється в чергу за одним із чотирьох типів обміну: fanout, topic, direct, header
Обмін фанаутами
Цей тип обміну транслює всі отримані повідомлення у всі черги, пов'язані з ним. Будь-які ключі маршрутизації, що надаються з опублікованим повідомленням, будуть ігноровані.
Обмін темами
У цьому типі обміну повідомлення надсилаються в чергу на основі ключа маршрутизації. Це означає, що повідомлення, надсилані до обміну темами, повинні мати специфічний ключ маршрутизації, який має бути списком слів, розділених точками (наприклад, 'acs.deviceoperations.'). Обмеження на формулювання становить 255 байт.
Ключ зв'язку повинен бути у тому ж форматі, що й ключ маршрутизації. Отже, повідомлення, надіслані з певним ключем маршрутизації, будуть доставлені до кожної черги, пов'язаної відповідним ключем зв'язування.
Ключі зв'язку дозволяють виконувати такі правила вираження:
*(зірочка) може замінити лише одне слово # (хеш) може замінити нуль або більше слів Коли черга прив'язана ключем зв'язку "#" (хеш), вона отримує всі повідомлення незалежно від ключа маршрутизації, так само як у обміні Fanout-out.
Прямий обмін
Коли оголошується черга, вона будеАвтоматично прив'язати до комутатора, який використовує ім'я черги як ключ маршрутизації。 Якщо ключ маршрутизації співпадає, повідомлення доставляється у відповідну чергу.
Обмін заголовками
Перемикачі заголовків дещо схожі на перемикачі тем, але на відміну від перемикач тем, маршрутизація базується на ключах маршруту, а значення заголовків — на даних заголовка повідомлення. Ключ маршрутизації перемикання теми — це лише рядок, тоді як перемикач заголовка може бути цілим числом і хешем.
(Кінець)
|