Advanced Message Queuing Protocol

AMQP
Familie Internett-protokollfamilie
Funksjon meldingskø
Siste versjon 1.0
havner 5672
Plassering i protokollstabelen *
App AMQP
Presentasjon andre
Økt andre
Transport TCP
Nett IP
Link Ethernet , andre
Fysisk andre
* i henhold til OSI-modellen
standarder
AMQP versjon 0-10

AMQP - standarden ( Advanced Message Queuing Protocol ) er en åpen standardprotokoll i applikasjonslaget til et kommunikasjonssystem. De definerende egenskapene til AMQP-protokollen er meldingsorientering, kø, ruting (både punkt-til-punkt og publiser-abonner), nøyaktighet og sikkerhet. [ 1 ]

AMQP fastsetter oppførselen til både serveren som leverer meldingene og meldingsklienten i den grad at implementeringer fra forskjellige leverandører virkelig er interoperable, på samme måte som SMTP , HTTP , FTP og lignende har skapt interoperable systemer. Andre tidligere forsøk på å standardisere mellomvare skjedde på API -nivå (for eksempel JMS ) og oppnådde ikke reell interoperabilitet. [ 2 ] I motsetning til JMS, som bare definerer et API, er AMQP en protokoll på trådnivå. En trådnivåprotokoll er en beskrivelse av formatet på data som sendes over nettverket som en strøm av oktetter . Følgelig kan ethvert program som kan lage og tolke meldinger som samsvarer med dette dataformatet samvirke med ethvert annet verktøy som samsvarer med denne protokollen, uavhengig av implementeringsspråket.

Utvikling

AMQP ble definert fra midten av 2004 til midten av 2006 av den amerikanske investeringsbanken JP Morgan Chase og iMatix Corporation , som også utviklet implementeringer i C / C++ og Java . JP Morgan Chase og iMatix dokumenterte protokollen som en interoperabel spesifikasjon og sendte den til en arbeidsgruppe som inkluderte Red Hat , Cisco Systems , TWIST , IONA og iMatix . Fra november 2009 består denne arbeidsgruppen av følgende selskaper: Bank of America , Barclays , Cisco Systems , Credit Suisse , Deutsche Börse Systems , Envoy Technologies, Inc., Goldman Sachs , Progress Software, iMatix Corporation, JPMorgan Chase Bank Inc. NA, Microsoft Corporation, Novell , Rabbit Technologies Ltd., Red Hat, Inc., Solace Systems , Tervela Inc. , TWIST Process Innovations ltd, WS02 og 29West Inc.

Et viktig designmål for AMQP var å oppnå opprettelsen av åpne standardprotokollstabler for bedriftsmeldinger, både innenfor samme organisasjon og mellom organisasjoner, ved å kombinere AMQP med en av de mange åpne standardene som beskriver forretningsmeldingstransaksjoner. eller mer generisk SOAP sikre transportprotokoller .

Selv om AMQP har sin opprinnelse i finansbransjen, kan den brukes på et bredt spekter av mellomvareproblemer.

AMQP-modellen

AMQP definerer en rekke enheter. Fra sammenkoblingsperspektivet er de mest relevante:

Enhetene som brukes til å sende og motta spesifikke meldinger er alle erklært innenfor en kanal. En erklæring garanterer for klienten som gjør det at enheten eksisterer (eller tidligere ble erklært av en annen klient). Ethvert forsøk på å erklære en navngitt enhet med andre egenskaper enn de den hadde da den ble erklært, resulterer i en feil. For å endre egenskapene til en navngitt enhet, må den først slettes før den opprettes på nytt.

Noen av disse enhetene er navngitt. Navnet må være unikt innenfor rammen av enheten og dens megler. Siden klienter vanligvis ikke har midler til å få en liste over alle tilgjengelige navngitte enheter (i det minste er det ingen slik operasjon definert i AMQP-spesifikasjonen), er det kunnskap om et enhetsnavn som lar klienten utføre operasjoner.

Navn bruker UTF-8-koding , må være mellom 1 og 255 tegn lange, og må begynne med et siffer, en bokstav eller understrek.

Vekslere

Utvekslerne er enhetene som meldingene sendes til. De har et navn så vel som en type og egenskaper som:

Merk at vekslere er planlagt fjernet i AMQP/1.0.

Køer

Køer er enhetene som mottar meldinger. De har et navn og egenskaper, men ingen type. Kunder kan abonnere på køer, med den effekt at meldingsmegleren vil levere (via en push -mekanisme , dvs. aktivt av megleren) innholdet i køen til klienter. Alternativt kan klienter aktivt trekke meldinger fra køen etter eget ønske ( trekkmekanisme ).

Køen sørger for at meldinger leveres i samme rekkefølge som de ankom i køen; denne bestillingen er vanligvis kjent som FIFO . I noen tilfeller av omdirigering (for eksempel på grunn av en feil som involverer en omstart av megleren) er ikke denne bestillingen garantert.

Køegenskapene inkluderer:

Merk at køer forventes å erstatte vekslere i AMQP/1.0.

Meldinger

Meldingene har ikke noe navn og publiseres i en utveksler. De består av en overskrift og en innholdsdel. Mens brødteksten inneholder ugjennomsiktige data, inneholder overskriften en rekke valgfrie egenskaper:

Linker

En binding er et forhold mellom en kø og en veksler som spesifiserer hvordan meldinger flyter fra veksleren til køen. Egenskapene til bindingen stemmer overens med rutingsalgoritmen som brukes i vekslerne. Bindinger (og veksleralgoritmer) kan bestilles på en skala fra minst til mest komplekse:

Ikke alle disse bindingene er implementert som standard, eller av alle implementeringer.

Typer vekslere og effekten av koblinger

Disse fire enhetene utgjør den grunnleggende modellen til AMQP. Nøkkelen til å forstå hvordan en melding sendes til en kø ligger i forholdet mellom vekslertypen og den resulterende tolkningen av rutenøkkelen.

En utveksler vil levere maksimalt én kopi av en gitt melding til en kø hvis rutenøkkelen i meldingen samsvarer med en binding (påfølgende semantisk identiske bindinger kan ikke resultere i dupliserte kopier av samme melding). Hva som utgjør en korrespondanse, er derimot utelukkende avhengig av typen veksler:

Andre typer vekslere, f.eks. leverandørspesifikke, er eksplisitt tillatt i spesifikasjonen.

Konseptet med å koble navngitte køer med navngitte vekslere har kraftige egenskaper (mens kobling holder begge enhetene uavhengige av hverandre). Det er for eksempel mulig å koble en enkelt kø gjennom flere bindinger til en enkelt veksler, eller til flere. Eller flere forbrukere kan dele navnet på en kø og binde seg til den med de samme parameterne, og dermed bare få meldingene som de andre forbrukerne ikke har konsumert. Eller flere forbrukere kan erklære uavhengige køer, men deler de samme bindingene og dermed får alle beskjeden om at en annen forbruker ville ha fått på veksleren knyttet til disse bindingene.

Spesifikasjonsrevisjoner og fremtiden til AMQP

Følgende AMQP-protokollspesifikasjoner er publisert, i kronologisk rekkefølge:

1.0-utkastet til spesifikasjonen endrer AMQP-modellen illustrert ovenfor ved å fjerne begrepene vekslere og bindinger, og erstatte dem med køer og lenker . Denne endringen tar sikte på å avhjelpe to problemer med den forrige tilnærmingen:

  1. Utgiveren trenger å vite mye om topologien til mottakeren (hvilke vekslere og typer vekslere er tilgjengelige).
  2. Produsentflytkontroll er komplekst: hvis en veksler ruter en melding til to forskjellige køer, en tom og den andre nesten full, hvilken flytkontrollinformasjon skal sendes til produsenten og hvordan skal den bestemmes?

Andre endringer inkluderer innføringen av en direkte køordning som ligner på e -post eller XMPP . Den hever forespørsler til første-ordens klasser , og tillater publisering av tjenesteplasseringsposter ved hjelp av DNS .

Implementeringer

Dette er AMQP-implementeringene som er offentlig tilgjengelige.

Megler og klient

Kun løper

Kun klient

Referanser

  1. ^ O'Hara, J. (2007). "Mot en mellomvare for en varebedrift" . ACM kø 5 : 48-55. doi : 10.1145/1255421.1255424 . Arkivert fra originalen 11. februar 2012 . Hentet 17. mai 2010 . 
  2. Vinoski, S. (2006). Advanced Message Queuing Protocol . IEEE Internet Computing 10 : 87-89. doi : 10.1109/MIC.2006.116 . Arkivert fra originalen 7. februar 2009 . Hentet 4. oktober 2019 . 

Eksterne lenker