Ievads AMQP protokolā
AMQP (Advanced Message Queuing Protocol) ir lietojumprogrammu slāņa standarta protokols, kas nodrošina vienotus ziņojumapmaiņas pakalpojumus un ir atvērts standarts lietojumprogrammu slāņa protokoliem, kas paredzēti uz ziņojumu orientētai starpprogrammatūrai. AMQP ir tīkla protokols asinhronu ziņojumu nodošanai starp procesiem.
Klienti un ziņojumu starpprogrammatūra, kas balstīta uz šo protokolu, var piegādāt ziņojumus bez ierobežojumiem ar dažādiem klientu/starpprogrammatūras produktiem, dažādām izstrādes valodām utt.
AMQP galvenās īpašības ir orientēts uz ziņojumu, rindā, maršrutēšana (ieskaitot vienādranga un publicēšanu / abonēšanu), uzticamība un drošība. AMQP nodrošina ziņojumu sniedzēju un klientu uzvedību, nodrošinot patiesu sadarbspēju starp dažādiem piegādātājiem.
Maršrutēšanas ziņojumi
AMQP arhitektūrā jebkura veiksmīga ziņojumu maršrutēšana sastāv no trim daļām:
- Apmaiņa: kur ražotāji publicē ziņojumus
- Rindas: kur patērētāji saņem ziņojumus
- Saistījumi: kā ziņojumi tiek maršrutēti no slēdža uz noteiktu rindu
Apmaiņa un saistīšana
Tātad, kā ziņojums nonāk rindā? Ikreiz, kad vēlaties piegādāt ziņojumu patērētājam, vispirms tas jānosūta apmaiņas punktam. Pēc tam, pamatojoties uz noteiktiem noteikumiem vai maršrutēšanas atslēgām, RabbitMQ izlems, kurai rindai jāpiegādā ziņojumi.
Kārtulas jeb maršrutēšanas atslēgas ļauj piesaistīt rindu biržai. RabbitMQ mēģinās saskaņot maršrutēšanas atslēgu ziņojumā ar saistījumā izmantoto atslēgu. Pēc tam ziņojums tiek piegādāts rindā, pamatojoties uz vienu no četriem apmaiņas veidiem: fanout, tēma, tiešais, galvene
Fanout apmaiņa
Šāda veida apmaiņa pārraida visus saņemtos ziņojumus visām rindām, kas tai ir saistītas. Visas maršrutēšanas atslēgas, kas sniegtas kopā ar publicēto ziņojumu, tiks ignorētas.
Tēmu apmaiņa
Šāda veida apmaiņā ziņojumi tiek nosūtīti uz rindu, pamatojoties uz maršrutēšanas atslēgu. Tas nozīmē, ka ziņojumiem, kas nosūtīti uz tēmu apmaiņu, ir jābūt īpašai maršrutēšanas atslēgai, kurai jābūt vārdu sarakstam, kas atdalīts ar punktiem (piemēram, "acs.deviceoperations"). Formulējuma ierobežojums ir 255 baiti.
Saistīšanas atslēgai jābūt tādā pašā formātā kā maršrutēšanas atslēgai. Tāpēc ziņojumi, kas nosūtīti ar noteiktu maršrutēšanas atslēgu, tiks piegādāti katrai rindai, kas saistīta ar atbilstošu saistīšanas atslēgu.
Saistīšanas atslēgas pieļauj šādas izteiksmes kārtulas:
*(zvaigznīte) var aizstāt tikai vienu vārdu # (jaucējkods) var aizstāt nulli vai vairāk vārdu Ja rinda ir saistīta ar "#" (hash) saistīšanas atslēgu, tā saņems visus ziņojumus neatkarīgi no maršrutēšanas atslēgas, tāpat kā Fanout fan-out apmaiņā.
Tiešā apmaiņa
Kad rinda ir izsludināta, tāAutomātiska piesaiste slēdzim, kas kā maršrutēšanas atslēgu izmanto rindas nosaukumu。 Ja maršrutēšanas atslēga sakrīt, ziņojums tiek piegādāts atbilstošajā rindā.
Galvenes apmaiņa
Galvenes slēdži ir nedaudz līdzīgi tēmu slēdžiem, bet atšķirībā no tēmu slēdžiem maršrutēšana ir balstīta uz maršruta atslēgām, un galvenes slēdžu maršrutēšanas vērtības ir balstītas uz ziņojuma galvenes datiem. Tēmas slēdža maršrutēšanas atslēga ir tikai virkne, bet galvenes slēdzis var būt vesels skaitlis un jaucējkods.
(Beigas)
|