Introdução ao protocolo AMQP
AMQP (Advanced Message Queuing Protocol) é um protocolo padrão de nível de aplicação que fornece serviços de mensagens unificadas e é um padrão aberto para protocolos de camada de aplicação projetados para middleware orientado a mensagens. AMQP é um protocolo de rede para a passagem de mensagens assíncronas entre processos.
Clientes e middleware de mensagens baseados nesse protocolo podem entregar mensagens sem serem limitados por diferentes produtos/middleware, linguagens de desenvolvimento diferentes, etc.
As principais características do AMQP são orientado a mensagens, enfileirado, roteamento (incluindo peer-to-peer e publicação/assinatura), confiabilidade e segurança. O AMQP reforça o comportamento dos provedores de mensagens e clientes, permitindo verdadeira interoperabilidade entre diferentes fornecedores.
Mensagens de roteamento
Na arquitetura AMQP, qualquer roteamento de mensagem bem-sucedido consiste em três partes:
- Troca: Onde produtores publicam mensagens
- Filas: onde os consumidores recebem mensagens
- Bindings: Como as mensagens são roteadas do switch para uma fila específica
Trocas e Vinculações
Então, como a mensagem chega à fila? Sempre que você quiser entregar uma mensagem a um consumidor, primeiro deve enviá-la ao exchanger. Depois, com base em certas regras ou chaves de roteamento, o RabbitMQ decide para qual fila deve entregar as mensagens.
Regras – ou chaves de roteamento – permitem que você vincule uma fila à central. O RabbitMQ tentará corresponder a chave de roteamento da mensagem à chave usada na vinculação. A mensagem é então entregue à fila com base em um dos quatro tipos de troca: fanout, tópico, direto, cabeçalho
Intercâmbio de Fanout
Esse tipo de troca transmite todas as mensagens que recebe para todas as filas vinculadas a ele. Quaisquer chaves de roteamento fornecidas com a mensagem publicada serão ignoradas.
Troca de Temas
Nesse tipo de troca, as mensagens são enviadas para uma fila baseada na chave de roteamento. Isso significa que mensagens enviadas para a troca de tópicos devem ter uma chave de roteamento específica, que deve ser uma lista de palavras, separadas por pontos (por exemplo, 'acs.deviceoperations.'). O limite de redação é de 255 bytes.
A chave de vinculação deve estar no mesmo formato da chave de roteamento. Portanto, mensagens enviadas com uma chave de roteamento específica serão entregues a cada vinculado à fila com uma chave correspondente.
Chaves de vinculação permitem as seguintes regras de expressão:
*(asterisco) pode substituir apenas uma palavra # (hash) pode substituir zero ou mais palavras Quando uma fila é vinculada a uma chave de vinculação "#" (hash), ela receberá todas as mensagens independentemente da chave de roteamento, assim como em uma troca Fanout com fan-out.
Troca Direta
Quando uma fila é declarada, ela seráVincule automaticamente a um switch que usa o nome da fila como chave de roteamento。 Se a chave de roteamento coincidir, a mensagem é entregue à fila apropriada.
Troca de cabeçalhos
Switches de cabeçalho são um pouco semelhantes aos switches de tópico, mas, ao contrário dos switches de tópico, o roteamento é baseado em chaves de rota, e os valores de roteamento dos switches de cabeçalho são baseados nos dados de cabeçalho da mensagem. A chave de roteamento do tópico do switch é apenas uma string, enquanto o switch do cabeçalho pode ser um inteiro e um hash.
(Fim)
|