Podpora protokolu AMQP (Advanced Message Queueing Protocol) 1.0 ve službě Service Bus

Cloudová služba Azure Service Bus používá jako primární komunikační prostředky AMQP 1.0 . Microsoft se zabývá partnery v celém odvětví, a to jak se zákazníky, tak dodavateli konkurenčních zprostředkovatelů zasílání zpráv, vyvíjet a vyvíjet AMQP v minulém desetiletí s novými rozšířeními vyvinutými v technickém výboru OASIS AMQP. AMQP 1.0 je standard ISO a IEC (ISO 19464:20149).

AMQP umožňuje vytvářet multiplatformní hybridní aplikace s využitím neutrálního a implementačního otevřeného standardního protokolu. Aplikace můžete vytvářet pomocí komponent vytvořených pomocí různých jazyků a architektur a spouštějících se v různých operačních systémech. Všechny tyto komponenty se můžou připojit ke službě Service Bus a bezproblémově vyměňovat strukturované obchodní zprávy efektivně a s plnou věrností.

Úvod: Co je AMQP 1.0 a proč je důležité?

Tradičně se pro komunikaci mezi klientskými aplikacemi a zprostředkovateli používaly proprietární protokoly middlewaru orientované na zprávy. To znamená, že jakmile vyberete zprostředkovatele zasílání zpráv konkrétního dodavatele, musíte použít knihovny tohoto dodavatele k připojení klientských aplikací k zprostředkovateli. Výsledkem je míra závislosti na daném dodavateli, protože přenos aplikace do jiného produktu vyžaduje změny kódu ve všech připojených aplikacích. V komunitě Javy se standardy rozhraní API specifické pro jazyk, jako je Java Message Service (JMS) a abstrakce spring frameworku, zmírňovaly to poněkud, ale mají úzký rozsah funkcí a vylučují vývojáře pomocí jiných jazyků.

Připojení zprostředkovatelů zasílání zpráv od různých dodavatelů je navíc složité. Obvykle vyžaduje přemostění na úrovni aplikace, aby se zprávy přemísťovaly z jednoho systému do druhého a přeložily mezi jejich vlastními formáty zpráv. Je to běžný požadavek; Pokud například musíte poskytnout nové jednotné rozhraní pro starší různorodé systémy nebo integrovat IT systémy po sloučení. AMQP umožňuje přímé propojení zprostředkovatelů, například pomocí směrovačů, jako je Apache Qpid Dispatch Router nebo zprostředkovatele nativní "zkosení", jako je ten z RabbitMQ.

Softwarový průmysl je rychle se pohyblivý podnik; nové programovací jazyky a aplikační architektury jsou někdy poháněné tempem. Podobně se požadavky IT systémů v průběhu času vyvíjejí a vývojáři chtějí využívat nejnovější funkce platformy. Někdy ale vybraný dodavatel zasílání zpráv tyto platformy nepodporuje. Pokud jsou protokoly zasílání zpráv proprietární, není možné ostatním poskytovat knihovny pro tyto nové platformy. Proto musíte použít přístupy, jako je vytváření bran nebo mostů, které vám umožní dál používat produkt zasílání zpráv.

Vývoj protokolu AMQP (Advanced Message Queuing Protocol) 1.0 byl motivován těmito problémy. Pochází z JP Morgan Chase, který, stejně jako většina finančních služeb firem, jsou velkými uživateli middlewaru orientovaného na zprávy. Cílem bylo jednoduché: vytvořit opensourcový protokol pro zasílání zpráv, který umožnil vytvářet aplikace založené na zprávách pomocí komponent vytvořených v různých jazycích, architekturách a operačních systémech, a to vše s použitím nejlepších komponent z celé řady dodavatelů.

Technické funkce AMQP 1.0

AMQP 1.0 je efektivní, spolehlivý protokol zasílání zpráv na úrovni drátu, který můžete použít k vytváření robustních, multiplatformních aplikací pro zasílání zpráv. Protokol má jednoduchý cíl: definovat mechanismus zabezpečeného, spolehlivého a efektivního přenosu zpráv mezi dvěma stranami. Samotné zprávy jsou kódovány pomocí přenosné datové reprezentace, která umožňuje heterogenním odesílatelům a příjemcům vyměňovat strukturované obchodní zprávy s plnou věrností. Tady je souhrn nejdůležitějších funkcí:

  • Efektivní: AMQP 1.0 je protokol orientovaný na připojení, který používá binární kódování pro instrukce protokolu a obchodní zprávy přenášené přes něj. Zahrnuje sofistikovaná schémata řízení toků, která maximalizují využití sítě a připojených komponent. Protokol byl navržen tak, aby byl vyvážen mezi efektivitou, flexibilitou a interoperabilitou.
  • Spolehlivá: Protokol AMQP 1.0 umožňuje výměnu zpráv s celou řadou záruk spolehlivosti, od požáru a zapomenutí na spolehlivé, přesně po potvrzení doručení.
  • Flexibilní: AMQP 1.0 je flexibilní protokol, který lze použít k podpoře různých topologií. Stejný protokol lze použít pro komunikaci mezi klientem, klientem a zprostředkovatelem a komunikaci mezi zprostředkovateli.
  • Nezávislý model zprostředkovatele: Specifikace AMQP 1.0 neposkytuje žádné požadavky na model zasílání zpráv používaný zprostředkovatelem. To znamená, že do stávajících zprostředkovatelů zasílání zpráv je možné snadno přidat podporu AMQP 1.0.

AMQP 1.0 je standard (s velkým písmenem S).

AMQP 1.0 je mezinárodní standard schválený ISO a IEC jako ISO/IEC 19464:2014.

AMQP 1.0 je ve vývoji od roku 2008 základní skupinou více než 20 společností, jak technologických dodavatelů, tak firem koncových uživatelů. V této době přispěly uživatelské firmy svými skutečnými obchodními požadavky a dodavatelé technologií vyvinuli protokol tak, aby tyto požadavky splňovaly. V průběhu tohoto procesu se dodavatelé zúčastnili workshopů, ve kterých spolupracovali na ověření interoperability mezi jejich implementacemi.

V říjnu 2011 přešla vývojová práce na technický výbor v organizaci pro rozvoj strukturovaných informačních standardů (OASIS) a standard OASIS AMQP 1.0 byl vydán v říjnu 2012. Během vývoje normy se do technického výboru zapojily následující firmy:

  • Dodavatelé technologií: 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.
  • Uživatelské firmy: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.

Současné předsedy technického výboru OASIS AMQP představují Red Hat a Microsoft.

Mezi běžně citované výhody otevřených standardů patří:

  • Menší pravděpodobnost uzamčení dodavatele
  • Vzájemná funkční spolupráce
  • Široká dostupnost knihoven a nástrojů
  • Ochrana před nesolspíváním
  • Dostupnost znalostí zaměstnanců
  • Nižší a spravovatelné riziko

AMQP 1.0 a Service Bus

Podpora AMQP 1.0 ve službě Azure Service Bus znamená, že můžete používat funkce zprostředkovaného zasílání zpráv služby Service Bus a jejich publikování nebo přihlášení k odběru zprostředkovaných zpráv z celé řady platforem pomocí efektivního binárního protokolu. Kromě toho můžete vytvářet aplikace složené z komponent vytvořených pomocí kombinace jazyků, architektur a operačních systémů.

Následující obrázek znázorňuje ukázkové nasazení, ve kterém klienti Java běží v Linuxu, napsané pomocí standardního rozhraní JAVA Message Service (JMS) API a klientů .NET běžících ve Windows, vyměňují zprávy přes Service Bus pomocí AMQP 1.0.

Diagram showing one Service Bus exchanging messages with two Linux environments and two Windows environments.

Obrázek 1: Ukázkový scénář nasazení znázorňující zasílání zpráv mezi platformami pomocí služby Service Bus a AMQP 1.0

Všechny podporované klientské knihovny Service Bus dostupné prostřednictvím sady Azure SDK používají AMQP 1.0.

Možnost protokolu AMQP-over-WebSockets běží přes port TCP 443 stejně jako http/REST API, ale jinak je funkčně identická s prostým protokolem AMQP. Tato možnost má vyšší počáteční latenci připojení kvůli dodatečným opakovaným pokusům handshake a mírně větší režii, protože se jedná o kompromis pro sdílení portu HTTPS. Pokud je tento režim vybraný, je pro komunikaci dostatečný port TCP 443. Následující možnosti umožňují vybrat režim AMQP WebSockets.

Jazyk Možnost
.NET (Azure.Messaging.ServiceBus) Vytvořte ServiceBusClient pomocí konstruktoru, který jako parametr přebírá ServiceBusClientOptions. Nastavení ServiceBusClientOptions.TransportType na ServiceBusTransportType.AmqpWebSockets
.NET (Microsoft.Azure.ServiceBus) Při vytváření klientských objektů použijte konstruktory, které jako parametry přebírají TransportType, ServiceBus Připojení ion nebo ServiceBus Připojení ionStringBuilder.

U konstrukce, která přebírá transportType jako parametr, nastavte parametr na TransportType.AmqpWebSockets.

Pro konstruktor, který přebírá ServiceBusConnection jako parametr, nastavte ServiceBus Připojení ion. TransportType to TransportType.AmqpWebSockets.

Pokud použijete , použijte ServiceBusConnectionStringBuilderkonstruktory, které vám dávají možnost zadat transportType.

Java (com.azure.messaging.servicebus) Při vytváření klientů nastavte ServiceBusClientBuilder.transportType na AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) Při vytváření klientů nastavte transportType na com.microsoft.azure.servicebus.Client Nastavení na com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript Při vytváření objektů klienta služby Service Bus použijte webSocketOptions vlastnost v ServiceBusClientOptions.
Python Při vytváření klientů Service Bus nastavte ServiceBusClient.transport_type na TransportType.AmqpOverWebSocket.

30. září 2026 vyřadíme knihovny sady SDK služby Azure Service Bus pro WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus a com.microsoft.azure.servicebus, které nevyhovují pokynům sady Azure SDK. Také ukončíme podporu protokolu SBMP, takže tento protokol už nebudete moct používat po 30. září 2026. Před tímto datem migrujte na nejnovější knihovny sady Azure SDK, které nabízejí důležité aktualizace zabezpečení a vylepšené funkce.

I když starší knihovny je možné používat i po 30. září 2026, nebudou už od Microsoftu dostávat oficiální podporu a aktualizace. Další informace najdete v oznámení o vyřazení podpory.

Kromě toho můžete službu Service Bus použít z libovolného zásobníku protokolů kompatibilního s protokolem AMQP 1.0:

Jazyk Knihovna
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP pro Python, Apache Qpid Proton Python
PHP Azure uAMQP pro PHP
Ruby Apache Qpid Proton Ruby
Přejít Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript nebo uzel Rhea

Shrnutí

  • AMQP 1.0 je otevřený a spolehlivý protokol zasílání zpráv, který můžete použít k vytváření hybridních aplikací pro různé platformy. AMQP 1.0 je standard OASIS.

Další kroky

Jste připraveni na další informace? Navštivte následující odkazy: