Въведение в протокола AMQP
AMQP (Advanced Message Queuing Protocol) е протокол на приложно ниво, който предоставя унифицирани услуги за съобщения, и е отворен стандарт за протоколи на приложно ниво, предназначени за междинен софтуер, ориентиран към съобщения. AMQP е мрежов протокол за предаване на асинхронни съобщения между процеси.
Клиентите и междинният софтуер за съобщения, базирани на този протокол, могат да доставят съобщения без ограничения от различни клиентски/междинни продукти, различни езици за разработка и др.
Основните характеристики на AMQP са ориентиран към съобщения, опашка, маршрутизиране (включително peer-to-peer и публикуване/абонамент), надеждност и сигурност. AMQP налага поведението на доставчиците на съобщения и клиентите, позволявайки истинска съвместимост между различни доставчици.
Маршрутизиращи съобщения
В AMQP архитектурата всяко успешно маршрутизиране на съобщения се състои от три части:
- Обмен: Където продуцентите публикуват съобщения
- Опашки: Където потребителите получават съобщения
- Връзки: Как съобщенията се насочват от суича към конкретна опашка
Обмени и обвързвания
Как тогава съобщението достига до опашката? Винаги когато искате да предадете съобщение на потребител, първо трябва да го изпратите на обменника. След това, въз основа на определени правила или ключове за маршрутизиране, RabbitMQ решава към коя опашка да доставя съобщения.
Правилата – или ключовете за маршрутизиране – ви позволяват да свържете опашка към борсата. RabbitMQ ще се опита да съпостави маршрутизиращия ключ в съобщението с ключа, използван при свързването. Съобщението след това се доставя до опашката според един от четирите типа обмен: разширен, тема, директен, хедър
Размяна на фанаут
Този тип обмен излъчва всички получени съобщения към всички опашки, свързани с нея. Всички ключове за маршрутизация, предоставени с публикуваното съобщение, ще бъдат игнорирани.
Обмен на теми
В този тип обмен съобщенията се изпращат към опашка, базирана на маршрутизиращия ключ. Това означава, че съобщенията, изпратени към обмена на темата, трябва да имат специфичен ключ за маршрутизация, който трябва да бъде списък от думи, разделени по точки (например 'acs.deviceoperations.'). Ограничението на формулировката е 255 байта.
Ключът за свързване трябва да е в същия формат като ключа за маршрутизация. Затова съобщенията, изпратени с конкретен ключ за маршрутизация, ще се доставят до всяка опашка, свързана с съвпадащ свързващ ключ.
Клавишите за свързване позволяват следните правила за изразяване:
*(звездичка) може да замени само една дума # (хаш) може да замени нула или повече думи Когато опашката е обвързана с "#" (хеш) свързващ ключ, тя ще получи всички съобщения независимо от маршрутизиращия ключ, точно както при Fanout-out обмен.
Директен обмен
Когато се обяви опашка, тя ще бъдеАвтоматично се свързва към суич, който използва името на опашката като ключ за маршрутизиране。 Ако ключът за маршрутизиране съвпада, съобщението се доставя до съответната опашка.
Размяна на заглавия
Header превключвателите са донякъде подобни на topic switch-ите, но за разлика от topic switch-ите, маршрутизацията се базира на маршрутни ключове, а стойностите на header switch-овете се базират на данните от заглавието на съобщението. Ключът за маршрутизиране на темата е само низ, докато превключвателят на заглавието може да бъде цяло число и хеш.
(Край)
|