Introduktion till AMQP-protokollet
AMQP (Advanced Message Queuing Protocol) är ett standardprotokoll på applikationslagret som tillhandahåller enhetliga meddelandetjänster och är en öppen standard för applikationslagersprotokoll designade för meddelandeorienterad middleware. AMQP är ett nätverksprotokoll för att skicka asynkrona meddelanden mellan processer.
Klienter och meddelandemellanvara baserade på detta protokoll kan leverera meddelanden utan att vara begränsade av olika klient-/mellanvaruprodukter, olika utvecklingsspråk osv.
De viktigaste egenskaperna hos AMQP är meddelandeorienterad, köplacerad, routing (inklusive peer-to-peer och publicish/subscribe), tillförlitlighet och säkerhet. AMQP upprätthåller beteendet hos meddelandeleverantörer och klienter, vilket möjliggör verklig interoperabilitet mellan olika leverantörer.
Routingmeddelanden
I AMQP-arkitekturen består varje lyckad meddelanderoutning av tre delar:
- Utbyte: Där producenter publicerar meddelanden
- Köer: Där konsumenter tar emot meddelanden
- Bindningar: Hur meddelanden routas från switchen till en specifik kö
Utbyten och bindningar
Så hur når meddelandet kön? När du vill leverera ett meddelande till en konsument måste du först skicka det till utbytaren. Sedan, baserat på vissa regler eller routningsnycklar, kommer RabbitMQ att bestämma vilken kö den ska leverera meddelanden till.
Regler – eller routningsknappar – gör det möjligt att binda en kö till börsen. RabbitMQ kommer att försöka matcha routingnyckeln i meddelandet med den tangent som används i bindningen. Meddelandet levereras sedan till kön baserat på en av fyra utbytestyper: fanout, ämne, direkt, header
Utflyktsutbyte
Denna typ av utbyte sänder alla meddelanden den tar emot till alla köer som är bundna till den. Alla routningsnycklar som följer med det publicerade meddelandet kommer att ignoreras.
Ämnesutbyte
I denna typ av utbyte skickas meddelanden till en kö baserat på routningsnyckeln. Detta innebär att meddelanden som skickas till ämnesutbytet måste ha en specifik routningsnyckel, som måste vara en lista av ord, separerade med punkter (t.ex. 'acs.deviceoperations.'). Gränsen för formulering är 255 byte.
Bindningsnyckeln måste ha samma format som routningsnyckeln. Därför levereras meddelanden som skickas med en specifik routningsnyckel till varje kö som är bunden med en matchande bindningsnyckel.
Bindningsnycklar möjliggör följande uttrycksregler:
*(asterisk) kan bara ersätta ett ord # (hash) kan ersätta noll eller fler ord När en kö binds med en "#" (hash) bindningsnyckel kommer den att ta emot alla meddelanden oavsett routnyckeln, precis som vid en Fanout--out-utdelning.
Direktutbyte
När en kö deklareras kommer den att göra detBind automatiskt till en switch som använder könamnet som routningsknapp。 Om routningsnyckeln matchar levereras meddelandet till rätt kö.
Headerutbyte
Headerswitchar liknar till viss del ämnesswitchar, men till skillnad från topicswitchar baseras routingen på ruttnycklar, och routningsvärdena för headerswitchar baseras på meddelandets headerdata. Ämnesbytets routingnyckel är bara en sträng, medan headerswitchen kan vara ett heltal och en hash.
(Slut)
|