Sissejuhatus AMQP protokolli
AMQP (Advanced Message Queuing Protocol) on rakenduskihi standardprotokoll, mis pakub ühtseid sõnumiteenuseid ning on avatud standard rakenduskihi protokollidele, mis on mõeldud sõnumipõhisele vahendustarkvarale. AMQP on võrguprotokoll asünkroonsete sõnumite edastamiseks protsesside vahel.
Selle protokolli põhjal töötavad kliendid ja sõnumivahevara suudavad sõnumeid edastada ilma, et neid piiraksid erinevad kliendi/vahendustarkvara tooted, erinevad arenduskeeled jne.
AMQP peamised omadused on sõnumipõhine, järjekorras, marsruutimine (sh peer-to-peer ja publish/subscribe), töökindlus ja turvalisus. AMQP rakendab sõnumipakkujate ja klientide käitumist, võimaldades erinevate tarnijate vahel tõelist koostalitlusvõimet.
Marsruutimissõnumid
AMQP arhitektuuris koosneb iga edukas sõnumite marsruutimine kolmest osast:
- Vahetus: Kus produtsendid avaldavad sõnumeid
- Järjekorrad: Kus tarbijad saavad sõnumeid
- Sidumised: Kuidas sõnumid suunatakse lülitist kindlasse järjekorda
Vahetused ja sidumised
Kuidas siis sõnum järjekorda jõuab? Iga kord, kui soovid sõnumi tarbijale edastada, pead selle esmalt vahetajale saatma. Seejärel otsustab RabbitMQ kindlate reeglite või marsruutimisvõtmete põhjal, millisesse järjekorda sõnumeid edastada.
Reeglid – ehk marsruutimisvõtmed – võimaldavad siduda järjekorra vahetusega. RabbitMQ püüab sobitada sõnumis oleva marsruudivõti sidumises kasutatud võtmega. Sõnum toimetatakse järjekorda nelja vahetustüübi alusel: fanout, teema, otse, päis
Fanout Exchange
Seda tüüpi vahetus edastab kõik saadud sõnumid kõigile temaga seotud järjekordadele. Kõik marsruutimisvõtmed, mis on antud avaldatud sõnumiga, jäetakse tähelepanuta.
Teemavahetus
Sellises vahetuses saadetakse sõnumid järjekorda vastavalt marsruutimisvõtmele. See tähendab, et teemavahetusele saadetud sõnumitel peab olema konkreetne marsruutimisvõti, mis peab olema sõnade nimekiri, mis on eraldatud punktidega (nt 'acs.deviceoperations.'). Sõnastuspiirang on 255 baiti.
Sidumisvõti peab olema samas formaadis kui marsruutimisvõti. Seetõttu toimetatakse igasse järjekorda seotud vastava sidumisvõtmega saadetud sõnumid vastava sidumisvõtmega.
Sidumisvõtmed võimaldavad järgmisi väljendusreegleid:
*(tärn) võib asendada ainult ühte sõna # (räsi) võib asendada nulli või enam sõna Kui järjekord on seotud "#" (räsi) sidumisvõtmega, saab ta kõik sõnumid vastu sõltumata marsruutimisvõtmest, täpselt nagu Fanout fan-out vahetuses.
Otsene vahetus
Kui järjekord on välja kuulutatud, siis see juhtubSiduge automaatselt lülitiga, mis kasutab järjekorra nime marsruutimisvõtmena。 Kui marsruutimisvõti klapib, toimetatakse sõnum vastavasse järjekorda.
Päise vahetus
Päislülitid on mõnevõrra sarnased teemalülititele, kuid erinevalt teemalülititest põhineb marsruutimine marsruutivõtmetel ning päislülitite marsruutimisväärtused põhinevad sõnumi päise andmetel. Teemalüliti marsruutimisvõti on ainult string, samas kui päise lüliti võib olla täisarv ja räsi.
(Lõpp)
|