Share via


Ondersteuning voor Advanced Message Queueing Protocol (AMQP) 1.0 in Service Bus

De Azure Service Bus-cloudservice gebruikt amqp 1.0 als primaire communicatiemiddel. Microsoft is betrokken bij partners in de hele branche, zowel klanten als leveranciers van concurrerende berichtenbrokers, om AMQP in de afgelopen tien jaar te ontwikkelen en te ontwikkelen, met nieuwe extensies die worden ontwikkeld in het technische comité OASIS AMQP. AMQP 1.0 is een ISO- en IEC-standaard (ISO 19464:20149).

Met AMQP kunt u platformoverschrijdende, hybride toepassingen bouwen met behulp van een leverancierneutraal en implementatieneutraal, open standaardprotocol. U kunt toepassingen bouwen met behulp van onderdelen die zijn gebouwd met behulp van verschillende talen en frameworks en die worden uitgevoerd op verschillende besturingssystemen. Al deze onderdelen kunnen verbinding maken met Service Bus en naadloos gestructureerde zakelijke berichten op efficiënte en betrouwbare wijze uitwisselen.

Inleiding: Wat is AMQP 1.0 en waarom is het belangrijk?

Traditioneel hebben berichtengeoriënteerde middlewareproducten eigen protocollen gebruikt voor communicatie tussen clienttoepassingen en brokers. Dit betekent dat wanneer u de berichtenbroker van een bepaalde leverancier hebt geselecteerd, u de bibliotheken van die leverancier moet gebruiken om uw clienttoepassingen te verbinden met die broker. Dit resulteert in een zekere mate van afhankelijkheid van die leverancier, omdat het overzetten van een toepassing naar een ander product codewijzigingen vereist in alle verbonden toepassingen. In de Java-community hebben taalspecifieke API-standaarden, zoals Java Message Service (JMS) en de abstracties van het Spring Framework, die pijn enigszins verlicht, maar hebben een beperkt functiebereik en sluiten ontwikkelaars uit die andere talen gebruiken.

Bovendien is het lastig om berichtenbrokers van verschillende leveranciers te verbinden. Normaal gesproken is overbrugging op toepassingsniveau vereist om berichten van het ene systeem naar het andere te verplaatsen en om te zetten tussen hun eigen berichtindelingen. Het is een algemene vereiste; Wanneer u bijvoorbeeld een nieuwe geïntegreerde interface moet bieden aan oudere verschillende systemen of IT-systemen moet integreren na een fusie. AMQP maakt het mogelijk om rechtstreeks verbinding te maken tussen brokers, bijvoorbeeld met behulp van routers zoals Apache Qpid Dispatch Router of broker-native 'shovels' zoals die van RabbitMQ.

De software-industrie is een snel veranderend bedrijf; nieuwe programmeertalen en toepassingsframeworks worden in een soms verwarrend tempo geïntroduceerd. Op dezelfde manier ontwikkelen de vereisten van IT-systemen zich in de loop van de tijd en willen ontwikkelaars profiteren van de nieuwste platformfuncties. Soms biedt de geselecteerde leverancier van berichten echter geen ondersteuning voor deze platforms. Als berichtenprotocollen eigendom zijn, is het niet mogelijk voor anderen om bibliotheken voor deze nieuwe platforms te bieden. Daarom moet u benaderingen gebruiken, zoals het bouwen van gateways of bruggen waarmee u het berichtenproduct kunt blijven gebruiken.

De ontwikkeling van het Advanced Message Queuing Protocol (AMQP) 1.0 werd gemotiveerd door deze problemen. Het is ontstaan bij JP Morgan Chase, die, net als de meeste financiële dienstverleners, zware gebruikers zijn van berichtgeoriënteerde middleware. Het doel was eenvoudig: om een open-standaard messaging-protocol te maken dat het mogelijk maakte om berichtentoepassingen te bouwen met behulp van onderdelen die zijn gebouwd met verschillende talen, frameworks en besturingssystemen, allemaal met behulp van best-of-breed componenten van een scala aan leveranciers.

Technische functies van AMQP 1.0

AMQP 1.0 is een efficiënt, betrouwbaar berichtenprotocol op wire-level dat u kunt gebruiken om robuuste, platformoverschrijdende berichtentoepassingen te bouwen. Het protocol heeft een eenvoudig doel: het definiëren van de mechanismen van de veilige, betrouwbare en efficiënte overdracht van berichten tussen twee partijen. De berichten zelf worden gecodeerd met behulp van een draagbare gegevensweergave waarmee heterogene afzenders en ontvangers gestructureerde zakelijke berichten volledig kunnen uitwisselen. Hier volgt een overzicht van de belangrijkste functies:

  • Efficiënt: AMQP 1.0 is een verbindingsgeoriënteerd protocol dat gebruikmaakt van een binaire codering voor de protocolinstructies en de zakelijke berichten die erover worden overgedragen. Het bevat geavanceerde schema's voor stroombeheer om het gebruik van het netwerk en de verbonden onderdelen te maximaliseren. Dat gezegd hebbende, is het protocol ontworpen om een evenwicht te vinden tussen efficiëntie, flexibiliteit en interoperabiliteit.
  • Betrouwbaar: Met het AMQP 1.0-protocol kunnen berichten worden uitgewisseld met een reeks betrouwbaarheidsgaranties, van brand-en-vergeet tot betrouwbare, precies eenmaal bevestigde levering.
  • Flexibel: AMQP 1.0 is een flexibel protocol dat kan worden gebruikt om verschillende topologieën te ondersteunen. Hetzelfde protocol kan worden gebruikt voor client-naar-client-, client-to-broker- en broker-to-broker-communicatie.
  • Broker-model onafhankelijk: de AMQP 1.0-specificatie maakt geen vereisten voor het berichtenmodel dat door een broker wordt gebruikt. Dit betekent dat het mogelijk is om eenvoudig AMQP 1.0-ondersteuning toe te voegen aan bestaande berichtenbrokers.

AMQP 1.0 is een standaard (met een hoofdletter 'S')

AMQP 1.0 is een internationale standaard, goedgekeurd door ISO en IEC als ISO/IEC 19464:2014.

AMQP 1.0 is sinds 2008 in ontwikkeling door een kerngroep van meer dan 20 bedrijven, zowel technologieleveranciers als eindgebruikers. Gedurende die tijd hebben gebruikersbedrijven hun echte zakelijke vereisten bijgedragen en hebben de technologieleveranciers het protocol ontwikkeld om aan deze vereisten te voldoen. Tijdens het proces hebben leveranciers deelgenomen aan workshops waarin ze hebben samengewerkt om de interoperabiliteit tussen hun implementaties te valideren.

In oktober 2011 werd het ontwikkelingswerk overgezet naar een technisch comité binnen de Organisatie voor de Vooruitgang van Structured Information Standards (OASIS) en werd de OASIS AMQP 1.0 Standard uitgebracht in oktober 2012. De volgende ondernemingen namen deel aan het technische comité tijdens de ontwikkeling van de norm:

  • Technologieleveranciers: Axway Software, Huawei Technologies, IIT Software, INETCO Systems, Kaazing, Microsoft, Mitre Corporation, Primeton Technologies, Progress Software, Red Hat, SITA, Software AG, Solace Systems, VMware, WSO2, Zenika.
  • Gebruikersbedrijven: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.

De huidige voorzitters van de TECHNISCHE Commissie OASIS AMQP vertegenwoordigen Red Hat en Microsoft.

Enkele van de vaak geciteerde voordelen van open standaarden zijn:

  • Minder kans op vergrendeling van leveranciers
  • Interoperabiliteit
  • Brede beschikbaarheid van bibliotheken en hulpprogramma's
  • Bescherming tegen obsolcentie
  • Beschikbaarheid van deskundig personeel
  • Lager en beheersbaar risico

AMQP 1.0 en Service Bus

AMQP 1.0-ondersteuning in Azure Service Bus betekent dat u de Service Bus-berichtenfuncties in de wachtrij kunt plaatsen en publiceren/abonneren vanaf verschillende platforms met behulp van een efficiënt binair protocol. Bovendien kunt u toepassingen bouwen die bestaan uit onderdelen die zijn gebouwd met behulp van een combinatie van talen, frameworks en besturingssystemen.

In de volgende afbeelding ziet u een voorbeeldimplementatie waarin Java-clients die worden uitgevoerd op Linux, geschreven met behulp van de standaard JMS-API (Java Message Service) en .NET-clients die worden uitgevoerd in Windows, berichten uitwisselen via Service Bus met AMQP 1.0.

Diagram met één Service Bus die berichten uitwisselt met twee Linux-omgevingen en twee Windows-omgevingen.

Afbeelding 1: Voorbeeldimplementatiescenario met platformoverschrijdende berichten met Service Bus en AMQP 1.0

Alle ondersteunde Service Bus-clientbibliotheken die beschikbaar zijn via de Azure SDK, gebruiken AMQP 1.0.

De protocoloptie AMQP-over-WebSockets wordt uitgevoerd via poort TCP 443, net als de HTTP/REST API, maar is anders functioneel identiek met gewone AMQP. Deze optie heeft een hogere initiële verbindingslatentie vanwege extra handshake-roundtrips en iets meer overhead als compromis voor het delen van de HTTPS-poort. Als deze modus is geselecteerd, is TCP-poort 443 voldoende voor communicatie. Met de volgende opties kunt u de AMQP WebSockets-modus selecteren.

Taal Optie
.NET (Azure.Messaging.ServiceBus) Maak ServiceBusClient met behulp van een constructor die ServiceBusClientOptions als parameter gebruikt. ServiceBusClientOptions.TransportType instellen op ServiceBusTransportType.AmqpWebSockets
.NET (Microsoft.Azure.ServiceBus) Wanneer u clientobjecten maakt, gebruikt u constructors die TransportType, ServiceBusConnection of ServiceBusConnectionStringBuilder als parameters gebruiken.

Voor de constructie die als parameter wordt gebruikt transportType , stelt u de parameter in op TransportType.AmqpWebSockets.

Stel de ServiceBusConnection.TransportType in op TransportType.AmqpWebSockets voor de constructor die als parameter wordt gebruikt.ServiceBusConnection

Als u gebruikt ServiceBusConnectionStringBuilder, gebruikt u constructors waarmee u de transportTypeoptie kunt opgeven.

Java (com.azure.messaging.servicebus) Wanneer u clients maakt, stelt u ServiceBusClientBuilder.transportType in op AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) Wanneer u clients maakt, stelt u transportType com.microsoft.azure.servicebus.ClientSettings in op com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript Wanneer u Service Bus-clientobjecten maakt, gebruikt u de webSocketOptions eigenschap in ServiceBusClientOptions.
Python Wanneer u Service Bus-clients maakt, stelt u ServiceBusClient.transport_type in op TransportType.AmqpOverWebSocket

Op 30 september 2026 gaan we de Azure Service Bus SDK-bibliotheken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus en com.microsoft.azure.servicebus buiten gebruik stellen, die niet voldoen aan de Azure SDK-richtlijnen. We beëindigen ook de ondersteuning van het SBMP-protocol, zodat u dit protocol na 30 september 2026 niet meer kunt gebruiken. Migreer naar de nieuwste Azure SDK-bibliotheken, die vóór die datum essentiële beveiligingsupdates en verbeterde mogelijkheden bieden.

Hoewel de oudere bibliotheken nog steeds meer dan 30 september 2026 kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.

Daarnaast kunt u Service Bus gebruiken vanuit elke CONFORME AMQP 1.0-protocolstack:

Taal Bibliotheek
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP voor Python, Apache Qpid Proton Python)
PHP Azure uAMQP voor PHP
Ruby Apache Qpid Proton Ruby
Go Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Node Nandoe

Samenvatting

  • AMQP 1.0 is een open, betrouwbaar berichtenprotocol dat u kunt gebruiken om platformoverschrijdende, hybride toepassingen te bouwen. AMQP 1.0 is een OASIS-standaard.

Volgende stappen

Wilt u meer weten? Ga naar de volgende koppelingen: