Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 3645|Antwoord: 0

Gedetailleerde uitleg van de RabbitMQ AMQP-berichtarchitectuur

[Link kopiëren]
Geplaatst op 14-08-2022 23:32:43 | | | |
Introductie tot het AMQP-protocol

AMQP (Advanced Message Queuing Protocol) is een standaardprotocol op applicatielaag dat unified messaging-diensten biedt en een open standaard is voor applicatielaagprotocollen ontworpen voor message-oriented middleware. AMQP is een netwerkprotocol voor het doorgeven van asynchrone berichten tussen processen.

Clients en message-middleware gebaseerd op dit protocol kunnen berichten bezorgen zonder beperkt te worden door verschillende client-/middlewareproducten, verschillende ontwikkeltalen, enzovoort.

De belangrijkste kenmerken van AMQP zijn berichtgeoriënteerd, in de wachtrij, routering (inclusief peer-to-peer en publiceren/abonneren), betrouwbaarheid en beveiliging. AMQP handhaaft het gedrag van berichtproviders en klanten, waardoor echte interoperabiliteit tussen verschillende leveranciers mogelijk is.

Gedetailleerde uitleg van het AMQP-protocol
https://www.itsvse.com/thread-10347-1-1.html

Routeringsberichten

In de AMQP-architectuur bestaat elke succesvolle berichtroutering uit drie onderdelen:

  • Uitwisseling: Waar producenten berichten publiceren
  • Wachtrijen: Waar consumenten berichten ontvangen
  • Bindings: Hoe berichten van de switch naar een specifieke wachtrij worden gerouteerd


Uitwisselingen en bindingen

Hoe bereikt het bericht dan de wachtrij? Wanneer je een bericht aan een consument wilt overbrengen, moet je het eerst naar de uitwisselaar sturen. Vervolgens bepaalt RabbitMQ op basis van bepaalde regels of routeringssleutels aan welke wachtrij berichten moet worden afgeleverd.

Regels - of routeringssleutels - stellen je in staat een wachtrij aan de exchange te koppelen. RabbitMQ zal proberen de routeringssleutel in het bericht te matchen met de toets die in de binding wordt gebruikt. Het bericht wordt vervolgens aan de wachtrij geleverd op basis van een van vier uitwisselingstypen: fanout, topic, direct, header



Fanout-uitwisseling

Dit type uitwisseling zendt alle ontvangen berichten uit naar alle wachtrijen die eraan gekoppeld zijn. Alle routeringssleutels die bij het gepubliceerde bericht worden geleverd, worden genegeerd.

Onderwerpuitwisseling

In dit type uitwisseling worden berichten naar een wachtrij gestuurd op basis van de routeringssleutel. Dit betekent dat berichten die naar de topic-uitwisseling worden gestuurd, een specifieke routeringssleutel moeten hebben, die een lijst van woorden moet zijn, gescheiden door punten (bijv. 'acs.deviceoperations.'). De limiet voor de formulering is 255 bytes.

De bindingstoets moet in hetzelfde formaat zijn als de routeringssleutel. Daarom worden berichten die met een specifieke routeringssleutel worden verzonden, geleverd aan elke wachtrij die met een bijpassende bindingssleutel is gebonden.

Bindingssleutels maken de volgende expressieregels mogelijk:

*(asterisk) kan slechts één woord vervangen
# (hash) kan nul of meer woorden vervangen
Wanneer een wachtrij wordt gebonden met een "#" (hash) bindingssleutel, ontvangt deze alle berichten ongeacht de routeringssleutel, net als bij een Fanout fan-out uitwisseling.

Directe uitwisseling

Wanneer een wachtrij wordt aangekondigd, zal deze dat doenBind automatisch aan een switch die de wachtrijnaam als routingsleutel gebruikt。 Als de routeringssleutel overeenkomt, wordt het bericht afgeleverd aan de juiste wachtrij.

Headerruil

Headerswitches lijken enigszins op topic switches, maar in tegenstelling tot topic switches is de routing gebaseerd op routesleutels, en zijn de routeringswaarden van header switches gebaseerd op de headergegevens van het bericht.
De topic switch routing key is slechts een string, terwijl de headerswitch een geheel getal en een hash kan zijn.

(Einde)





Vorig:Gedetailleerde uitleg van het AMQP-protocol
Volgend:[Draai]. NET-prestatieoptimalisaties - doorloop snel lijstcollecties
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com