Введение в протокол AMQP
AMQP (Advanced Message Queueuing Protocol) — это стандартный протокол прикладного уровня, предоставляющий унифицированные сервисы обмена сообщениями и являющийся открытым стандартом для протоколов прикладного уровня, предназначенных для промежуточного программного обеспечения, ориентированного на сообщения. AMQP — это сетевой протокол для передачи асинхронных сообщений между процессами.
Клиенты и промежуточное ПО на основе этого протокола могут доставлять сообщения без ограничений разными клиентскими/промежуточными продуктами, разными языками разработки и т.д.
Основные характеристики AMQP — ориентированность на сообщения, очередь, маршрутизация (включая peer-to-peer и публикацию/подписку), надёжность и безопасность. AMQP обеспечивает поведение поставщиков сообщений и клиентов, обеспечивая истинную совместимость между разными поставщиками.
Маршрутизирующие сообщения
В архитектуре AMQP любая успешная маршрутизация сообщений состоит из трёх частей:
- Обмен: где продюсеры публикуют сообщения
- Очереди: где потребители получают сообщения
- Привязки: Как сообщения передаются от коммутатора к определённой очереди
Обмены и привязки
Так как же сообщение попадает в очередь? Когда вы хотите передать сообщение потребителю, сначала нужно отправить его обменнику. Затем, основываясь на определённых правилах или ключах маршрутизации, RabbitMQ решает, в какую очередь ему доставлять сообщения.
Правила — или ключи маршрутизации — позволяют привязать очередь к бирже. RabbitMQ попытается сопоставить ключ маршрутизации в сообщении с ключом, используемым в привязке. Сообщение затем доставляется в очередь по одному из четырёх типов обмена: fanout, topic, direct, header
Обмен фанаут
Этот тип станции транслирует все полученные сообщения во все очереди, связанные с ним. Любые ключи маршрутизации, предоставленные в опубликованном сообщении, будут игнорироваться.
Обмен темами
В этом виде обмена сообщения отправляются в очередь на основе ключа маршрутизации. Это означает, что сообщения, отправляемые в обмен темами, должны иметь определённый ключ маршрутизации, который должен представлять собой список слов, разделённых точками (например, 'acs.deviceoperations.'). Ограничение формулировки составляет 255 байт.
Ключ связки должен быть в том же формате, что и ключ маршрутизации. Таким образом, сообщения, отправленные с определённым ключом маршрутизации, будут доставляться в каждую очередь с соответствующим ключом связывания.
Клавиши связывания позволяют использовать следующие правила выражения:
*(звездочка) может заменить только одно слово # (хеш) может заменить ноль или более слов Когда очередь связана ключом «#» (хеш), она получает все сообщения независимо от ключа маршрутизации, как в обмене Fanout.
Прямой обмен
Когда объявляется очередь, она будетАвтоматическое привязывание к коммутатору, который использует имя очереди в качестве ключа маршрутизации。 Если ключ маршрутизации совпадает, сообщение доставляется в соответствующую очередь.
Обмен заголовками
Коммутаторы заголовков во многом похожи на переключатели тем, но, в отличие от коммутаторов по темам, маршрутизация основана на ключах маршрута, а значения маршрутизации коммутаторов — на данных заголовков сообщения. Ключ маршрутизации переключателя темы — это всего лишь строка, тогда как переключатель заголовка может быть целым числом и хешем.
(Конец)
|