Suporte a AMQP (Advanced Message Queueing Protocol) 1.0 no Service Bus

O serviço de nuvem do Barramento de Serviço do Azure usa o AMQP 1.0 como seu principal meio de comunicação. A Microsoft tem se envolvido com parceiros em todo o setor, clientes e fornecedores de corretores de mensagens concorrentes, para desenvolver e evoluir o AMQP na última década, com novas extensões sendo desenvolvidas no Comitê Técnico do OASIS AMQP. AMQP 1.0 é uma norma ISO e IEC (ISO 19464:20149).

O AMQP permite que você crie aplicativos híbridos de plataforma cruzada usando um protocolo de padrão aberto neutro em relação ao fornecedor e à implementação. Você pode construir aplicativos usando componentes que são criados usando diferentes linguagens e estruturas e que são executados em sistemas operacionais diferentes. Todos esses componentes podem se conectar ao Service Bus e trocar mensagens comerciais estruturadas de forma eficiente e com total fidelidade.

Introdução: O que é AMQP 1.0 e por que é importante?

Tradicionalmente, os produtos de middleware orientados a mensagens têm usado protocolos proprietários para comunicação entre aplicativos cliente e corretores. Isso significa que, depois de selecionar o agente de mensagens de um determinado fornecedor, você deve usar as bibliotecas desse fornecedor para conectar seus aplicativos cliente a esse broker. Isso resulta em um grau de dependência desse fornecedor, uma vez que a portabilidade de um aplicativo para um produto diferente requer alterações de código em todos os aplicativos conectados. Na comunidade Java, os padrões de API específicos da linguagem, como o Java Message Service (JMS) e as abstrações do Spring Framework, aliviaram um pouco essa dor, mas têm um escopo de recursos estreito e excluem desenvolvedores que usam outras linguagens.

Além disso, conectar corretores de mensagens de diferentes fornecedores é complicado. Normalmente, requer uma ponte no nível do aplicativo para mover mensagens de um sistema para outro e para traduzir entre seus formatos de mensagem proprietários. É um requisito comum; por exemplo, quando você deve fornecer uma nova interface unificada para sistemas díspares mais antigos ou integrar sistemas de TI após uma fusão. O AMQP permite a interconexão direta de corretores, por exemplo, usando roteadores como o Apache Qpid Dispatch Router ou "pás" nativas do corretor como a do RabbitMQ.

A indústria de software é um negócio em rápida evolução; Novas linguagens de programação e estruturas de aplicativos são introduzidas em um ritmo às vezes desconcertante. Da mesma forma, os requisitos dos sistemas de TI evoluem ao longo do tempo e os desenvolvedores querem aproveitar os recursos mais recentes da plataforma. No entanto, às vezes, o fornecedor de mensagens selecionado não suporta essas plataformas. Se os protocolos de mensagens forem proprietários, não é possível que outros forneçam bibliotecas para essas novas plataformas. Portanto, você deve usar abordagens como a criação de gateways ou pontes que permitem que você continue a usar o produto de mensagens.

O desenvolvimento do Advanced Message Queuing Protocol (AMQP) 1.0 foi motivado por essas questões. Teve origem no JP Morgan Chase, que, como a maioria das empresas de serviços financeiros, são grandes utilizadores de middleware orientado para mensagens. O objetivo era simples: criar um protocolo de mensagens de padrão aberto que tornasse possível construir aplicativos baseados em mensagens usando componentes construídos usando diferentes linguagens, estruturas e sistemas operacionais, todos usando os melhores componentes de uma variedade de fornecedores.

Características técnicas do AMQP 1.0

O AMQP 1.0 é um protocolo de mensagens eficiente, confiável e de nível de cabo que você pode usar para criar aplicativos de mensagens robustos e multiplataforma. O protocolo tem um objetivo simples: definir a mecânica da transferência segura, confiável e eficiente de mensagens entre duas partes. As próprias mensagens são codificadas usando uma representação de dados portátil que permite que remetentes e recetores heterogêneos troquem mensagens comerciais estruturadas com total fidelidade. Aqui está um resumo dos recursos mais importantes:

  • Eficiente: AMQP 1.0 é um protocolo orientado a conexão que usa uma codificação binária para as instruções do protocolo e as mensagens comerciais transferidas através dele. Ele incorpora esquemas sofisticados de controle de fluxo para maximizar a utilização da rede e dos componentes conectados. Dito isto, o protocolo foi concebido para encontrar um equilíbrio entre eficiência, flexibilidade e interoperabilidade.
  • Confiável: O protocolo AMQP 1.0 permite que as mensagens sejam trocadas com uma gama de garantias de confiabilidade, desde fogo e esquecimento até confiável, exatamente uma vez reconhecida a entrega.
  • Flexível: AMQP 1.0 é um protocolo flexível que pode ser usado para suportar diferentes topologias. O mesmo protocolo pode ser usado para comunicações cliente-a-cliente, cliente-para-corretor e corretor-para-corretor.
  • Independente do modelo do corretor: a especificação AMQP 1.0 não faz nenhum requisito no modelo de mensagens usado por um corretor. Isso significa que é possível adicionar facilmente o suporte AMQP 1.0 aos corretores de mensagens existentes.

AMQP 1.0 é um padrão (com 'S' maiúsculo)

AMQP 1.0 é uma norma internacional, aprovada pela ISO e IEC como ISO/IEC 19464:2014.

O AMQP 1.0 está em desenvolvimento desde 2008 por um grupo central de mais de 20 empresas, tanto fornecedores de tecnologia quanto empresas usuárias finais. Durante esse tempo, as empresas usuárias contribuíram com seus requisitos de negócios do mundo real e os fornecedores de tecnologia desenvolveram o protocolo para atender a esses requisitos. Ao longo do processo, os fornecedores participaram em workshops em que colaboraram para validar a interoperabilidade entre as suas implementações.

Em outubro de 2011, o trabalho de desenvolvimento passou para um comitê técnico dentro da Organização para o Avanço dos Padrões de Informação Estruturada (OASIS) e o Padrão OASIS AMQP 1.0 foi lançado em outubro de 2012. As seguintes empresas participaram do comitê técnico durante o desenvolvimento da norma:

  • Fornecedores de tecnologia: 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.
  • Empresas utilizadoras: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.

Os atuais presidentes do Comitê Técnico do OASIS AMQP representam a Red Hat e a Microsoft.

Alguns dos benefícios comumente citados dos padrões abertos incluem:

  • Menor chance de bloqueio do fornecedor
  • Interoperabilidade
  • Ampla disponibilidade de bibliotecas e ferramentas
  • Proteção contra a obsolescência
  • Disponibilidade de pessoal experiente
  • Risco menor e gerenciável

AMQP 1.0 e Service Bus

O suporte ao AMQP 1.0 no Barramento de Serviço do Azure significa que você pode usar o enfileiramento do Service Bus e publicar/assinar recursos de mensagens intermediadas de uma variedade de plataformas usando um protocolo binário eficiente. Além disso, você pode criar aplicativos compostos por componentes criados usando uma combinação de linguagens, estruturas e sistemas operacionais.

A figura a seguir ilustra um exemplo de implementação em que clientes Java em execução no Linux, escritos usando a API padrão do Java Message Service (JMS) e clientes .NET em execução no Windows, trocam mensagens via Service Bus usando AMQP 1.0.

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

Figura 1: Exemplo de cenário de implantação mostrando mensagens entre plataformas usando o Service Bus e o AMQP 1.0

Todas as bibliotecas de cliente do Service Bus com suporte disponíveis por meio do SDK do Azure usam o AMQP 1.0.

A opção de protocolo AMQP-over-WebSockets é executada pela porta TCP 443 tal como a API HTTP/REST, mas é funcionalmente idêntica ao AMQP simples. Esta opção tem maior latência de conexão inicial devido a viagens de ida e volta de handshake extra e um pouco mais de sobrecarga como compensação para compartilhar a porta HTTPS. Se este modo estiver selecionado, a porta TCP 443 é suficiente para comunicação. As opções a seguir permitem selecionar o modo AMQP WebSockets.

Idioma Opção
.NET (Azure.Messaging.ServiceBus) Crie ServiceBusClient usando um construtor que usa ServiceBusClientOptions como parâmetro. Defina ServiceBusClientOptions.TransportType como ServiceBusTransportType.AmqpWebSockets
.NET (Microsoft.Azure.ServiceBus) Ao criar objetos cliente, use construtores que usam TransportType, ServiceBusConnection ou ServiceBusConnectionStringBuilder como parâmetros.

Para a construção que usa transportType como parâmetro, defina o parâmetro como TransportType.AmqpWebSockets.

Para o construtor que usa ServiceBusConnection como parâmetro, defina o ServiceBusConnection.TransportType como TransportType.AmqpWebSockets.

Se você usar ServiceBusConnectionStringBuilder, use construtores que lhe dão uma opção para especificar o transportType.

Java (com.azure.messaging.servicebus) Ao criar clientes, defina ServiceBusClientBuilder.transportType como AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) Ao criar clientes, defina transportType em com.microsoft.azure.servicebus.ClientSettings como com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript Ao criar objetos de cliente do Service Bus, use a webSocketOptions propriedade em ServiceBusClientOptions.
Python Ao criar clientes do Service Bus, defina ServiceBusClient.transport_type como TransportType.AmqpOverWebSocket

Em 30 de setembro de 2026, desativaremos as bibliotecas do SDK do Barramento de Serviço do Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus e com.microsoft.azure.servicebus, que não estão em conformidade com as diretrizes do SDK do Azure. Também encerraremos o suporte ao protocolo SBMP, para que você não possa mais usar esse protocolo após 30 de setembro de 2026. Migre para as bibliotecas mais recentes do SDK do Azure, que oferecem atualizações de segurança críticas e recursos aprimorados, antes dessa data.

Embora as bibliotecas mais antigas ainda possam ser usadas após 30 de setembro de 2026, elas não receberão mais suporte e atualizações oficiais da Microsoft. Para obter mais informações, consulte o anúncio de aposentadoria de suporte.

Além disso, você pode usar o Service Bus de qualquer pilha de protocolo compatível com AMQP 1.0:

Idioma Biblioteca
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP para Python, Apache Qpid Proton Python
PHP Azure uAMQP para PHP
Ruby Apache Qpid Proton Ruby
Go Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Nó Reia

Resumo

  • O AMQP 1.0 é um protocolo de mensagens aberto e confiável que você pode usar para criar aplicativos híbridos multiplataforma. AMQP 1.0 é um padrão OASIS.

Próximos passos

Está pronto para saber mais? Visite os seguintes links: