Įvadas į AMQP protokolą
AMQP (Advanced Message Queuing Protocol) yra taikomojo lygmens standartinis protokolas, teikiantis vieningas pranešimų siuntimo paslaugas, ir yra atviras taikomųjų programų lygmens protokolų, skirtų į pranešimus orientuotai tarpinei programinei įrangai, standartas. AMQP yra tinklo protokolas, skirtas asinchroniniams pranešimams perduoti tarp procesų.
Šiuo protokolu pagrįsti klientai ir pranešimų tarpinė programinė įranga gali pristatyti pranešimus neribojant skirtingų klientų / tarpinės programinės įrangos produktų, skirtingų kūrimo kalbų ir kt.
Pagrindinės AMQP savybės yra orientuotos į pranešimus, eilėje, maršruto parinkimas (įskaitant peer-to-peer ir publikavimą / prenumeravimą), patikimumas ir saugumas. AMQP užtikrina pranešimų teikėjų ir klientų elgesį, įgalindamas tikrą skirtingų pardavėjų sąveiką.
Pranešimų nukreipimas
AMQP architektūroje bet koks sėkmingas pranešimų nukreipimas susideda iš trijų dalių:
- "Exchange": kur gamintojai skelbia pranešimus
- Eilės: kur vartotojai gauna pranešimus
- Susiejimai: kaip pranešimai nukreipiami iš komutatoriaus į konkrečią eilę
Mainai ir įrišimai
Taigi, kaip pranešimas pasiekia eilę? Kai norite pristatyti pranešimą vartotojui, pirmiausia turite jį nusiųsti keitikliui. Tada, remdamasis tam tikromis taisyklėmis ar maršruto parinkimo raktais, "RabbitMQ" nuspręs, į kurią eilę turėtų pristatyti pranešimus.
Taisyklės arba maršruto parinkimo raktai leidžia susieti eilę su birža. "RabbitMQ" bandys suderinti pranešimo maršruto raktą su susiejime naudojamu raktu. Tada pranešimas pristatomas į eilę pagal vieną iš keturių mainų tipų: fanout, tema, tiesioginis, antraštė
Fanout mainai
Šio tipo mainai transliuoja visus gautus pranešimus į visas su juo susietas eiles. Visų su publikuotu pranešimu pateiktų maršruto parinkimo raktų bus nepaisoma.
Temų mainai
Šio tipo mainuose pranešimai siunčiami į eilę pagal maršruto parinkimo raktą. Tai reiškia, kad pranešimai, siunčiami į temų mainus, turi turėti konkretų maršruto parinkimo raktą, kuris turi būti žodžių sąrašas, atskirtas taškais (pvz., "acs.deviceoperations"). Formuluočių limitas yra 255 baitai.
Susiejimo raktas turi būti tokio paties formato kaip ir maršruto parinkimo raktas. Todėl pranešimai, siunčiami naudojant konkretų maršruto parinkimo raktą, bus pristatyti į kiekvieną eilę, susietą su atitinkančiu susiejimo raktu.
Susiejimo raktai leidžia naudoti šias išraiškos taisykles:
*(žvaigždutė) gali pakeisti tik vieną žodį # (maiša) gali pakeisti nulį ar daugiau žodžių Kai eilė yra susieta su "#" (maišos) susiejimo raktu, ji gaus visus pranešimus, nepriklausomai nuo maršruto parinkimo rakto, kaip ir "Fanout" fan-out mainuose.
Tiesioginiai mainai
Paskelbus eilę, ji busAutomatiškai susieti su jungikliu, kuris naudoja eilės pavadinimą kaip maršruto parinkimo raktą。 Jei maršruto parinkimo raktas sutampa, pranešimas pristatomas į atitinkamą eilę.
Antraštės mainai
Antraštės komutatoriai yra šiek tiek panašūs į temų jungiklius, tačiau skirtingai nei temų jungikliai, maršruto parinkimas pagrįstas maršruto raktais, o antraštės komutatorių maršruto parinkimo reikšmės yra pagrįstos pranešimo antraštės duomenimis. Temos jungiklio nukreipimo raktas yra tik eilutė, o antraštės jungiklis gali būti sveikasis skaičius ir maiša.
(Pabaiga)
|