Úvod do protokolu AMQP
AMQP (Advanced Message Queuing Protocol) je protokol aplikačnej vrstvy, ktorý poskytuje jednotné komunikačné služby a je otvoreným štandardom pre aplikačné protokoly navrhnuté pre middleware orientovaný na správy. AMQP je sieťový protokol na prenášanie asynchrónnych správ medzi procesmi.
Klienti a middleware na správu založený na tomto protokole môžu doručovať správy bez obmedzení rôznymi klientskymi/middleware produktmi, rôznymi vývojovými jazykmi a podobne.
Hlavné charakteristiky AMQP sú orientácia na správy, frontovanie, smerovanie (vrátane peer-to-peer a publikovania/odberu), spoľahlivosť a bezpečnosť. AMQP presadzuje správanie poskytovateľov správ a klientov, čo umožňuje skutočnú interoperabilitu medzi rôznymi dodávateľmi.
Smerovanie správ
V architektúre AMQP pozostáva úspešné smerovanie správ z troch častí:
- Výmena: Kde producenti publikujú správy
- Fronty: Kde spotrebitelia prijímajú správy
- Väzby: Ako sa správy smerujú zo switcha do konkrétnej fronty
Výmeny a väzby
Ako sa teda správa dostane do fronty? Kedykoľvek chcete doručiť správu spotrebiteľovi, musíte ju najskôr poslať výmenníkovi. Potom, na základe určitých pravidiel alebo smerovacích kľúčov, RabbitMQ rozhodne, do ktorej fronty má doručovať správy.
Pravidlá – alebo smerovacie kľúče – vám umožňujú naviazať frontu na výmenu. RabbitMQ sa pokúsi priradiť smerovací kľúč v správe k použitému v prirade. Správa je potom doručená do fronty na základe jedného zo štyroch typov výmeny: fanout, téma, priamy, hlavička
Fanout Exchange
Tento typ výmeny vysiela všetky prijaté správy do všetkých frontov, ktoré sú naň naviazané. Akékoľvek smerovacie kľúče poskytnuté v publikovanej správe budú ignorované.
Výmena tém
Pri tomto type výmeny sa správy odosielajú do fronty na základe smerovacieho kľúča. To znamená, že správy posielané do výmeny tém musia mať špecifický smerovací kľúč, ktorým musí byť zoznam slov oddelených bodmi (napr. 'acs.deviceoperations.'). Limit slov je 255 bajtov.
Kľúč viazania musí byť v rovnakom formáte ako smerovací kľúč. Preto správy odoslané s konkrétnym smerovacím kľúčom budú doručené do každej fronty viazanej s príslušným väzbovým kľúčom.
Kľúče na viazanie umožňujú nasledujúce pravidlá výrazu:
*(hviezdička) môže nahradiť len jedno slovo # (hash) môže nahradiť nula alebo viac slov Keď je fronta viazaná kľúčom "#" (hash), dostane všetky správy bez ohľadu na smerovací kľúč, rovnako ako pri Fanout fan-out výmene.
Priama výmena
Keď je fronta deklarovaná, budeAutomaticky sa naviažte na prepínač, ktorý používa názov fronty ako smerovací kľúč。 Ak sa smerovací kľúč zhoduje, správa je doručená do príslušnej fronty.
Výmena hlavičiek
Prepínače hlavičiek sú do istej miery podobné prepínaniu tém, ale na rozdiel od prepínania tém je smerovanie založené na kľúčoch trasy a hodnoty smerovania hlavičkových prepínačov sú založené na hlavičkových dátach správy. Kľúč pre smerovanie medzi témami je iba reťazec, zatiaľ čo hlavičkový prepínač môže byť celé číslo aj hash.
(Koniec)
|