Dela via


Stöd för Advanced Message Queueing Protocol (AMQP) 1.0 i Service Bus

Azure Service Bus-molntjänsten använder AMQP 1.0 som sitt primära kommunikationsmedel. Microsoft har samarbetat med partners i hela branschen, både kunder och leverantörer av konkurrerande meddelandeköer, för att utveckla och utveckla AMQP under det senaste decenniet, med nya tillägg som utvecklas i OASIS AMQP Technical Committee. AMQP 1.0 är en ISO- och IEC-standard (ISO 19464:20149).

MED AMQP kan du skapa plattformsoberoende hybridprogram med hjälp av ett leverantörsneutralt och implementeringsneutralt, öppet standardprotokoll. Du kan skapa program med hjälp av komponenter som skapas med olika språk och ramverk och som körs på olika operativsystem. Alla dessa komponenter kan ansluta till Service Bus och sömlöst utbyta strukturerade affärsmeddelanden effektivt och med fullständig återgivning.

Introduktion: Vad är AMQP 1.0 och varför är det viktigt?

Traditionellt har meddelandeorienterade mellanprogramsprodukter använt patentskyddade protokoll för kommunikation mellan klientprogram och koordinatorer. Det innebär att när du har valt en viss leverantörs meddelandekö måste du använda leverantörens bibliotek för att ansluta dina klientprogram till den mäklaren. Det resulterar i ett visst beroende av leverantören, eftersom portning av ett program till en annan produkt kräver kodändringar i alla anslutna program. I Java-communityn har språkspecifika API-standarder som Java Message Service (JMS) och Spring Frameworks abstraktioner lindrat den smärtan något, men har ett begränsat funktionsomfång och exkluderar utvecklare som använder andra språk.

Dessutom är det svårt att ansluta meddelandeköer från olika leverantörer. Det kräver vanligtvis bryggning på programnivå för att flytta meddelanden från ett system till ett annat och översätta mellan deras egna meddelandeformat. Det är ett vanligt krav. När du till exempel måste tillhandahålla ett nytt enhetligt gränssnitt för äldre olika system eller integrera IT-system efter en sammanslagning. AMQP gör det möjligt att ansluta anslutningskoordinatorer direkt, till exempel med routrar som Apache Qpid Dispatch Router eller broker-native "spadar" som den i RabbitMQ.

Programvarubranschen är en snabbrörlig verksamhet. nya programmeringsspråk och programramverk introduceras i en ibland förvirrande takt. På samma sätt utvecklas kraven för IT-system med tiden och utvecklare vill dra nytta av de senaste plattformsfunktionerna. Men ibland stöder inte den valda meddelandeleverantören dessa plattformar. Om meddelandeprotokoll är patentskyddade är det inte möjligt för andra att tillhandahålla bibliotek för dessa nya plattformar. Därför måste du använda metoder som att skapa gatewayer eller bryggor som gör att du kan fortsätta att använda meddelandeprodukten.

Utvecklingen av ADVANCED Message Queuing Protocol (AMQP) 1.0 motiverades av dessa problem. Det härstammar från JP Morgan Chase, som, liksom de flesta finansiella tjänsteföretag, är tunga användare av meddelandeorienterade mellanprogram. Målet var enkelt: att skapa ett meddelandeprotokoll med öppen standard som gjorde det möjligt att skapa meddelandebaserade program med hjälp av komponenter som skapats med olika språk, ramverk och operativsystem, allt med hjälp av förstklassiga komponenter från en rad olika leverantörer.

Tekniska funktioner i AMQP 1.0

AMQP 1.0 är ett effektivt, tillförlitligt meddelandeprotokoll på trådnivå som du kan använda för att skapa robusta, plattformsoberoende meddelandeprogram. Protokollet har ett enkelt mål: att definiera mekaniken för säker, tillförlitlig och effektiv överföring av meddelanden mellan två parter. Själva meddelandena kodas med hjälp av en bärbar datarepresentation som gör det möjligt för heterogena avsändare och mottagare att utbyta strukturerade affärsmeddelanden med fullständig återgivning. Här är en sammanfattning av de viktigaste funktionerna:

  • Effektivt: AMQP 1.0 är ett anslutningsorienterat protokoll som använder en binär kodning för protokollinstruktionerna och de affärsmeddelanden som överförs över det. Den innehåller avancerade flödeskontrollscheman för att maximera användningen av nätverket och de anslutna komponenterna. Med detta sagt utformades protokollet för att hitta en balans mellan effektivitet, flexibilitet och samverkan.
  • Tillförlitlig: AMQP 1.0-protokollet tillåter att meddelanden utbyts med en rad tillförlitlighetsgarantier, från eld och glöm till tillförlitlig, exakt när en bekräftad leverans har bekräftats.
  • Flexibel: AMQP 1.0 är ett flexibelt protokoll som kan användas för att stödja olika topologier. Samma protokoll kan användas för kommunikation från klient till klient, klient-till-asynkron och asynkron meddelandekö.
  • Koordinatormodell oberoende: AMQP 1.0-specifikationen ställer inga krav på meddelandemodellen som används av en asynkron meddelandekö. Det innebär att du enkelt kan lägga till AMQP 1.0-stöd till befintliga meddelandeköer.

AMQP 1.0 är en standard (med versalt "S")

AMQP 1.0 är en internationell standard, godkänd av ISO och IEC som ISO/IEC 19464:2014.

AMQP 1.0 har varit under utveckling sedan 2008 av en kärngrupp på mer än 20 företag, både teknikleverantörer och slutanvändarföretag. Under den tiden har användarföretag bidragit med sina verkliga affärskrav och teknikleverantörerna har utvecklat protokollet för att uppfylla dessa krav. Under hela processen har leverantörer deltagit i workshops där de samarbetade för att validera samverkan mellan sina implementeringar.

I oktober 2011 övergick utvecklingsarbetet till en teknisk kommitté inom Organization for the Advancement of Structured Information Standards (OASIS) och OASIS AMQP 1.0 Standard släpptes i oktober 2012. Följande företag deltog i den tekniska kommittén under utvecklingen av standarden:

  • Teknikleverantörer: 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.
  • Användarföretag: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.

De nuvarande stolarna i OASIS AMQP Technical Committee representerar Red Hat och Microsoft.

Några av de vanliga fördelarna med öppna standarder är:

  • Mindre risk för leverantörslåsning
  • Samverkan
  • Bred tillgänglighet för bibliotek och verktyg
  • Skydd mot föråldring
  • Tillgänglighet för kunnig personal
  • Lägre och hanterbar risk

AMQP 1.0 och Service Bus

AMQP 1.0-stöd i Azure Service Bus innebär att du kan använda Service Bus-köer och publicera/prenumerera på asynkrona meddelandefunktioner från en rad olika plattformar med hjälp av ett effektivt binärt protokoll. Dessutom kan du skapa program som består av komponenter som skapats med hjälp av en blandning av språk, ramverk och operativsystem.

Följande bild illustrerar en exempeldistribution där Java-klienter som körs på Linux, skrivna med JMS-standard-API:et (Java Message Service) och .NET-klienter som körs i Windows, utbyter meddelanden via Service Bus med AMQP 1.0.

Diagram som visar ett Service Bus-utbyte av meddelanden med två Linux-miljöer och två Windows-miljöer.

Bild 1: Exempel på distributionsscenario som visar plattformsoberoende meddelanden med Service Bus och AMQP 1.0

Alla Service Bus-klientbibliotek som stöds som är tillgängliga via Azure SDK använder AMQP 1.0.

Protokollalternativet AMQP-over-WebSockets körs via port TCP 443 precis som HTTP/REST-API:et, men är annars funktionellt identiskt med vanlig AMQP. Det här alternativet har högre inledande anslutningsfördröjning på grund av extra handskakningsturer och något mer omkostnader som kompromiss för att dela HTTPS-porten. Om det här läget är valt räcker det med TCP-port 443 för kommunikation. Med följande alternativ kan du välja LÄGET AMQP WebSockets.

Språk Alternativ
.NET (Azure.Messaging.ServiceBus) Skapa ServiceBusClient med hjälp av en konstruktor som tar ServiceBusClientOptions som en parameter. Ange ServiceBusClientOptions.TransportType till ServiceBusTransportType.AmqpWebSockets
.NET (Microsoft.Azure.ServiceBus) När du skapar klientobjekt använder du konstruktorer som tar TransportType, ServiceBusConnection eller ServiceBusConnectionStringBuilder som parametrar.

För konstruktionen som tar transportType som en parameter anger du parametern till TransportType.AmqpWebSockets.

För konstruktorn som tar ServiceBusConnection som en parameter anger du ServiceBusConnection.TransportType till TransportType.AmqpWebSockets.

Om du använder ServiceBusConnectionStringBuilderanvänder du konstruktorer som ger dig möjlighet att ange transportType.

Java (com.azure.messaging.servicebus) När du skapar klienter anger du ServiceBusClientBuilder.transportType till AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) När du skapar klienter anger du transportType i com.microsoft.azure.servicebus.ClientSettings till com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript När du skapar Service Bus-klientobjekt använder du webSocketOptions egenskapen i ServiceBusClientOptions.
Python När du skapar Service Bus-klienter anger du ServiceBusClient.transport_type till TransportType.AmqpOverWebSocket

Den 30 september 2026 drar vi tillbaka Azure Service Bus SDK-biblioteken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus och com.microsoft.azure.servicebus, som inte följer Riktlinjerna för Azure SDK. Vi kommer också att avsluta stödet för SBMP-protokollet, så du kommer inte längre att kunna använda det här protokollet efter den 30 september 2026. Migrera till de senaste Azure SDK-biblioteken, som erbjuder kritiska säkerhetsuppdateringar och förbättrade funktioner, före det datumet.

Även om de äldre biblioteken fortfarande kan användas efter den 30 september 2026 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.

Dessutom kan du använda Service Bus från alla AMQP 1.0-kompatibla protokollstackar:

Språk Bibliotek
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP för Python, Apache Qpid Proton Python)
PHP Azure uAMQP för 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 Rhea

Sammanfattning

  • AMQP 1.0 är ett öppet, tillförlitligt meddelandeprotokoll som du kan använda för att skapa plattformsoberoende hybridprogram. AMQP 1.0 är en OASIS-standard.

Nästa steg

Vill du lära dig mer? Besök följande länkar: