Suporte ao AMQP (Advanced Message Queueing Protocol) 1.0 no Barramento de Serviço

O serviço de nuvem do Barramento de Serviço do Azure usa o AMQP 1.0 como seus principais meios de comunicação. A Microsoft tem se unido a parceiros em todo o setor, tanto clientes quanto fornecedores de agentes de mensagens concorrentes, para desenvolver e evoluir o AMQP na última década, com novas extensões sendo desenvolvidas no Comitê Técnico de AMQP do OASIS. O AMQP 1.0 é um padrão ISO e IEC (ISO 19464:20149).

O AMQP permite que você crie aplicativos híbridos de várias plataformas usando um protocolo de padrão aberto de fornecedor e implementação neutros. Você pode criar aplicativos que usam componentes que são criados usando estruturas e linguagens diferentes e que são executados em sistemas operacionais diferentes. Todos esses componentes podem se conectar ao Service Bus e perfeitamente trocam mensagens de negócios estruturados com eficiência e fidelidade total.

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

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

Além disso, é complicado conectar agentes de mensagens de diferentes fornecedores. Isso geralmente requer uma ponte no nível de aplicativo para mover as mensagens de um sistema para outro e para converter entre os formatos de mensagem proprietários. Esse é um requisito comum. Por exemplo, quando você deve fornecer uma nova interface unificada diferentes sistemas mais antigos para ou integrar sistemas de TI após uma fusão. O AMQP permite a interconexão direta de agentes de conexão, por exemplo, usando roteadores como o Apache Qpid Dispatch Router ou "pás" nativas do agente, como um dos RabbitMQ.

A indústria de software é uma empresa de avanço rápido. Novas linguagens de programação e estruturas de aplicativo são inventadas em um ritmo por vezes desconcertante. Da mesma forma, os requisitos dos sistemas de TI evoluem ao longo do tempo e os desenvolvedores querem tirar proveito dos recursos da plataforma mais recentes. No entanto, às vezes o fornecedor de mensagens selecionado não suporta essas plataformas. Se os protocolos de mensagens são proprietários, não é possível para outras pessoas fornecer bibliotecas para essas novas plataformas. Portanto, você deve usar abordagens como criar gateways ou pontes para que você possa continuar a usar o produto do sistema de mensagens.

O desenvolvimento do AMQP (Advanced Message Queueing Protocol) 1.0 foi motivado por tais problemas. Ela se originou no JP Morgan Chase, que, como as empresas de serviços financeiras mais, são usuários pesados de middleware orientado a mensagens. O objetivo era simples: criar um protocolo de mensagens de padrão livre que torna possível a criação de aplicativos com base em mensagem de uso dos componentes incorporados usando diferentes linguagens, estruturas e sistemas operacionais, tudo isso usando componentes de ponta em uma variedade de fornecedores.

Recursos técnicos do AMQP 1.0

O AMQP (Advanced Message Queuing Protocol) 1.0 é um protocolo de mensagens eficiente, confiável e conectado que pode ser usado para criar aplicativos de mensagens avançados entre plataformas. O protocolo tem um simples objetivo: definir a mecânica da transferência segura, confiável e eficiente de mensagens entre duas partes. As mensagens em si são codificadas usando uma representação de dados portáteis que permite heterogêneos remetentes e receptores trocar mensagens comerciais estruturados com fidelidade total. A seguir está um resumo dos recursos mais importantes:

  • Eficiente: o AMQP 1.0 é um protocolo orientado para conexão que usa uma codificação binária para as instruções de protocolo e as mensagens de negócios transferidas por ele. Ele incorpora esquemas sofisticadas de controle de fluxo para maximizar a utilização da rede e os componentes conectados. Dito isso, o protocolo foi projetado para obter um equilíbrio entre a eficiência, a flexibilidade e a interoperabilidade.
  • Confiável: o protocolo AMQP 1.0 permite que mensagens sejam trocadas com uma variedade de garantias de confiabilidade, de disparar e esquecer a confiável, entrega confirmada apenas uma vez.
  • Flexível: o AMQP 1.0 é um protocolo flexível que pode ser usado para oferecer suporte a topologias diferentes. O mesmo protocolo pode ser usado para comunicações de cliente a cliente, agente de cliente e agente de agente.
  • Independente do modelo de agente: a especificação do AMQP 1.0 não faz quaisquer requisitos no modelo de mensagens usado por um agente. Isso significa que é possível adicionar facilmente suporte AMQP 1.0 para corretores de mensagens existentes.

AMQP 1.0 é um Padrão (com P maiúsculo)

O AMQP 1.0 é um padrão internacional aprovado pela ISO e IEC como ISO/IEC 19464:2014.

AMQP 1.0 foi desenvolvida desde 2008 por um grupo central de mais de 20 empresas, fornecedores de tecnologia e empresas de usuário final. Durante esse tempo, empresas de usuário contribuíram suas necessidades de negócios reais e os fornecedores de tecnologia se desenvolveram o protocolo para atender a esses requisitos. Durante todo o processo, fornecedores participaram workshops colaboraram para validar a interoperabilidade entre suas implementações.

Em outubro de 2011, o trabalho de desenvolvimento para um comitê técnico dentro da organização para o avanço dos Structured Information Standards (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 do padrão:

  • Fornecedores de tecnologia: Axway Software, Huawei Technologies, IIT Software, INETCO Systems, Kaazing, Microsoft, Mitre Corporation, Primeton Technologies, progresso Software, Red Hat, SITA, Software AG, Solace Systems, VMware, WSO2, Zenika.
  • Empresas de usuário: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.

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

Alguns dos benefícios de padrões abertos citados com frequência incluem:

  • Menos chance de bloqueio de fornecedor
  • Interoperabilidade
  • Ampla disponibilidade de bibliotecas e ferramentas
  • Proteção contra obsolescência
  • Disponibilidade de equipe capacitada
  • 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 os recursos de enfileiramento e publicação/inscrição do sistema de mensagens agenciado do Barramento de Serviço em uma variedade de plataformas usando um protocolo binário eficiente. Além disso, você pode criar aplicativos formados por componentes criados com o uso de uma mistura de linguagens, estruturas e sistemas operacionais.

O diagrama a seguir ilustra um exemplo de implantação no qual clientes Java em execução no Linux, escrito usando a API JMS (Java Message Service) padrão e clientes .NET em execução no Windows, trocam mensagens por meio do Barramento de Serviço usando o 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 Barramento de Serviço e o AMQP 1.0

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

A opção de protocolo AMQP-over-WebSockets é executada na porta TCP 443 da mesma forma que o HTTP/API REST, mas sua funcionalidade é idêntica à do AMQP simples. Essa opção tem uma latência de conexão inicial maior devido às viagens de ida e volta extras de handshake e um pouco mais de sobrecarga como compensação para o compartilhamento da porta HTTPS. Se esse modo estiver selecionado, a porta TCP 443 será suficiente para a comunicação. As opções a seguir permitem selecionar o modo WebSockets do AMQP.

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

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

Para o construtor que usa ServiceBusConnection como um parâmetro, defina 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 Barramento de Serviço, use a propriedade webSocketOptions em ServiceBusClientOptions.
Python Ao criar clientes do Barramento de Serviço, 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, portanto, ele não poderá mais ser usado após 30 de setembro de 2026. Antes dessa data, migre para as bibliotecas mais recentes do SDK do Azure, que oferecem atualizações de segurança críticas e funcionalidades aprimoradas.

Embora as bibliotecas mais antigas ainda poderão 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, confira o anúncio de desativação do suporte.

Além disso, você pode usar o Barramento de Serviço 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 for Python, Apache Qpid Proton Python
PHP Azure uAMQP for 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

Resumo

  • O AMQP (Advanced Message Queuing Protocol) 1.0 é um protocolo de mensagens aberto e confiável que pode ser usado para criar aplicativos híbridos de mensagens avançados entre plataformas. O AMQP 1.0 é um padrão OASIS.

Próximas etapas

Está pronto(a) para saber mais? Visite os links a seguir: