Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 3645|Svare: 0

Detaljert forklaring av RabbitMQ AMQP-meldingsarkitekturen

[Kopier lenke]
Publisert på 14.08.2022 23:32:43 | | | |
Introduksjon til AMQP-protokollen

AMQP (Advanced Message Queuing Protocol) er en applikasjonslagsstandardprotokoll som tilbyr enhetlige meldingstjenester, og er en åpen standard for applikasjonslagsprotokoller designet for meldingsorientert mellomvare. AMQP er en nettverksprotokoll for overføring av asynkrone meldinger mellom prosesser.

Klienter og meldingsmellomvare basert på denne protokollen kan levere meldinger uten å være begrenset av ulike klient-/mellomvareprodukter, ulike utviklingsspråk osv.

Hovedegenskapene til AMQP er meldingsorientert, købasert, ruting (inkludert peer-to-peer og publish/subscribe), pålitelighet og sikkerhet. AMQP håndhever oppførselen til meldingsleverandører og klienter, og muliggjør ekte interoperabilitet mellom ulike leverandører.

Detaljert forklaring av AMQP-protokollen
https://www.itsvse.com/thread-10347-1-1.html

Rutingsmeldinger

I AMQP-arkitekturen består enhver vellykket meldingsruting av tre deler:

  • Utveksling: Der produsenter publiserer meldinger
  • Køer: Hvor forbrukere mottar meldinger
  • Bindings: Hvordan meldinger rutes fra svitsjen til en spesifikk kø


Utvekslinger og innbindinger

Så hvordan når meldingen køen? Når du ønsker å levere en melding til en forbruker, må du først sende den til utveksleren. Deretter, basert på visse regler eller rutingnøkler, vil RabbitMQ bestemme hvilken kø den skal levere meldinger til.

Regler – eller rutingnøkler – gjør det mulig å binde en kø til sentralen. RabbitMQ vil forsøke å matche rutingnøkkelen i meldingen med nøkkelen som brukes i bindingen. Meldingen leveres deretter til køen basert på én av fire utvekslingstyper: fanout, topic, direct, header



Utvekslingsutveksling

Denne typen utveksling sender alle meldingene den mottar til alle køer knyttet til den. Alle rutingnøkler som følger med den publiserte meldingen vil bli ignorert.

Temautveksling

I denne typen utveksling sendes meldinger til en kø basert på rutingnøkkelen. Dette betyr at meldinger sendt til emneutvekslingen må ha en spesifikk rutingnøkkel, som må være en liste med ord, adskilt av punkter (f.eks. 'acs.deviceoperations.'). Tekstgrensen er 255 byte.

Bindingsnøkkelen må være i samme format som rutingnøkkelen. Derfor vil meldinger sendt med en spesifikk rutingnøkkel bli levert til hver kø bundet med en tilsvarende bindingsnøkkel.

Bindingsnøkler tillater følgende uttrykksregler:

*(stjerne) kan bare erstatte ett ord
# (hash) kan erstatte null eller flere ord
Når en kø er bundet med en "#" (hash) bindingsnøkkel, vil den motta alle meldinger uavhengig av rutingnøkkelen, akkurat som i en Fanout fan-out utveksling.

Direkte utveksling

Når en kø erklæres, vil denBind automatisk til en bryter som bruker kønavnet som rutingtast。 Hvis rutingnøkkelen stemmer, leveres meldingen til riktig kø.

Header-utveksling

Header-svitsjer ligner noe på emnesvitsjer, men i motsetning til emnesvitsjer baseres rutingen på rutenøkler, og rutingverdiene til header-svitsjer er basert på meldingens headerdata.
Topic switch-rutingnøkkelen er bare en streng, mens header-switchen kan være et heltall og en hash.

(Slutt)





Foregående:Detaljert forklaring av AMQP-protokollen
Neste:[Snu]. NET-ytelsesoptimaliseringer – gå raskt gjennom listesamlinger
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com