Você está na página 1de 10

08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

   

Protocolo de enfileiramento de mensagens avançado


(AMQP)

AMQP é a abreviatura de Advanced Message Queuing Protocol. O AMQP cria a interoperabilidade


entre o Producer, o Message Broker e o Consumer. Primeiro de tudo, precisamos responder a esta
pergunta: Por que precisamos do AMQP? Como tipos diferentes de formatos de mensagens e diferentes
tipos de formatos de roteamento precisam ser padronizados, a organização AMQP cria um padrão de
middleware de mensagens bem definido em todo o setor.

Como discutimos, a principal responsabilidade do AMQP é a interoperabilidade dos sistemas dentro dos
sistemas de mensagens. Portanto, precisamos explicar o escopo do AMQP, conforme explicado no
Documento de Especificação do AMQP :

 Um conjunto definido de recursos de mensagens

 Um protocolo de nível de rede

A organização AMQP criou o padrão com a ajuda dos requisitos de empresas conhecidas, como Cisco
Systems, JPMorgan Chase, Red Hat e assim por diante. Os requisitos mais importantes do Modelo
Avançado de Enfileiramento de Mensagens são listados a seguir, retirados do Documento de
Especificação do AMQP:

 Para garantir a interoperabilidade

 Para fornecer controle explícito

 Para permitir a configuração completa

Além disso, a organização do AMQP esclarece os requisitos da camada de transporte do AMQP da


seguinte forma, extraídos do Documento de Especificação do AMQP:



https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 1/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

 Para usar codificação binária

 Para lidar com mensagens

 Para ser de longa duração

 Para permitir o sistema assíncrono

 Para ser facilmente estendido

A partir de agora, vamos nos aprofundar nos detalhes do AMQP, começando com AMQ Model
Architecture e seus elementos.

Elementos AMQ

Como nós Conversei antes, AMQ significa Advanced Message Queuing, e agora estamos falando sobre
os elementos do AMQ e sua arquitetura principal. Podemos expressar a arquitetura principal do
middleware da seguinte forma: produtor / editor cria ou envia mensagens; então, as mensagens chegam
às trocas; depois disso, as mensagens são roteadas pelas filas de mensagens com as vinculações
relacionadas ao consumidor certo. Então, nós temos quatro elementos de modelo:

 Fluxo de Mensagens : explica o ciclo de vida da mensagem

 Trocas : aceita mensagens do editor e as rotas para as filas de mensagens

 Filas de Mensagens : Armazena mensagens na memória ou no disco e entrega mensagens aos


consumidores

 Vinculações : Especifica a relação entre uma troca e uma fila de mensagens que informa como
rotear mensagens para as Filas de Mensagens corretas

Agora estamos prontos para falar sobre os detalhes de cada elemento AMQ. Além disso, você pode
encontrar os elementos AMQ bem definidos na captura de tela a seguir:



https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 2/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

Pilha AMQP

Fluxo de mensagens
Em um Em poucas palavras, o Fluxo de Mensagens é iniciado quando o Produtor cria uma mensagem e a
envia para o Exchange. Em seguida, troque as rotas para a fila de mensagens relacionada com as
ligações fornecidas. Finalmente, o Consumidor recebe a mensagem enviada. A explicação bem definida
do fluxo de mensagens é listada da seguinte maneira:

1 Mensagem : Isso é produzido pelo aplicativo Publisher usando o AMQP Client com a colocação
de informações relacionadas, como Conteúdo, Propriedades e Informações de Roteamento
para a Mensagem.



https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 3/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

2 Exchange : recebe a mensagem, que é enviada pelo produtor e, em seguida, roteia a mensagem
para as filas corretas, que são definidas nas informações de roteamento da mensagem. A
mensagem será enviada para várias filas, uma vez que é determinada com as ligações.

3 Fila de Mensagens : Recebe a Mensagem e a adiciona à sua lista de espera. Assim quepossível,
o Message Queue envia uma mensagem ao consumidor relacionado. Se a Fila de Mensagens
não puder enviar a Mensagem, ela armazenará a Mensagem em um disco ou memória.

4 Consumidor : Recebe a Mensagem e envia Mensagem de Confirmação (geralmente é enviada


automaticamente) para o Publicador.

Você pode encontrar o fluxo de mensagens bem definido na captura de tela a seguir:

Fluxo de Mensagens

Trocas no AMQ
Trocas geralmente recebe mensagens e as encaminha para zero ou mais filas de mensagens. O
algoritmo de roteamento pode ser determinado com as ligações, o que é bem discutido no tópico
Especificação funcional neste capítulo.

As trocas são declaradas com seguintes propriedades importantes:

 Nome : Normalmente, o servidor informa seu nome automaticamente



 Durável : a fila de mensagens permanece presente ou não, dependendo se a duração está
definida ou se a transiente está definida

https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 4/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

 Exclusão automática : quando todas as filas terminam, as trocas são excluídas


automaticamente

Filas de mensagens
mensagem A fila no AMQ é semelhante aos outros sistemas de mensagens ou sistemas de
enfileiramento de tarefas. Eles armazenam as mensagens em uma maneira First-In-First-Out ( FIFO )
que é bem definida noestrutura de dados da fila. Diferente da estrutura de dados da Fila, se vários
leitores de uma fila estiverem ativos, um dos leitores às vezes tem prioridade sobre o outro. Então,
antes de um leva a mensagem antes dos outros leitores. Portanto, mensagemA fila no modelo AMQ é
chamada de FIFO fraco .

As Filas de Mensagens têm as propriedades como Trocas. Os mais importantes estão listados da
seguinte forma:

 Nome : define o nome da fila de mensagens

 Durável : se definido, a fila de mensagens não pode perder nenhuma mensagem

 Exclusivo : se definido, a fila de mensagens será excluída depois que a conexão for fechada

 Exclusão automática : se definida, a Fila de mensagens é excluída depois que o último


consumidor tiver cancelado a assinatura

Ligações
Ligações são regras que as trocas usam para rotear mensagens entre filas de mensagens. Assim, as
ligações esclarecem em qual fila de mensagens a mensagem será enviada. A ligação é determinada com
a chave de roteamento .

Como exemplo do Ligações na vida real, por exemplo, você tem três maneiras diferentes de ir ao seu
restaurante favorito, e você tem que decidir uma das maneiras. A decisão é determinada com a ajuda de
Bindings.

O AMQ suporta tipos diferentes de Ligações, que serão discutidos na próxima seção.

Especificações funcionais do AMQP

Depois de definindo cada elemento AMQ, agora estamos prontos para expressar funções de cada
elemento. Como uma breve introdução, Mensagens são o principal elemento do sistema, os Hosts


Virtuais são uma maneira de executar mais de uma instância do RabbitMQ Server em um servidor e

https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 5/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

Trocas de rotas das mensagens. Vamos mergulhar nos detalhes funcionais de cada elemento.

Mensagens AMQP
Mensagem é a entidade principal do sistema de mensagens, bem como o AMQP. É a unidade atômica de
processamento do sistema de roteamento e enfileiramento de middleware de acordo com a
especificação AMQP.

Uma mensagem consiste nos seguintes atributos:

 Conteúdo que é um dado binário

 Cabeçalho

 Propriedades

A captura de tela a seguir apresenta a ideia geral da mensagem AMQP:

Mensagem AMQP

Devido ao armazenamento de dados binários no conteúdo do AMQP, o AMQP tem a capacidade de


transferir arquivos, criando mensagem de nível de aplicativo e fluxo de dados, como streaming de vídeo.
As mensagens podem ser persistentes se configuradas e podem ter nível de prioridade, o que fornece
mensagens de alta prioridade para serem enviadas à frente de mensagens de prioridade mais baixa



aguardando na mesma fila de mensagens.

Hosts Virtuais
https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 6/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

AMQP tem um funcionalidade para ter vários ambientes isolados, que têm grupos de usuários, trocas,
filas de mensagens e assim por diante com a ajuda de Hosts Virtuais. É muito semelhante aos Hosts
Virtuais de qualquer servidor da Web na empresa.

Os clientes têm a opção de selecionar um host virtual na lista de hosts virtuais. A ferramenta de linha
de comando rabbitmqctl gerencia Hosts Virtuais. O mecanismo de autorização de cada host
virtual pode ser diferente. Os clientes têm que escolher um dos Hosts Virtuais, já que um Cliente não
pode se conectar a outro Host Virtual enquanto estiver conectado a um Host Virtual.

Tipos de troca
Como Conforme explicado no AMQ Elements, Exchanges é um agente de roteamento de mensagens em
um host virtual. Trocas recebem as mensagens e encaminham para o zero ou mais Filas de Mensagens.
As trocas têm propriedades, que estão bem definidas no tópico anterior. O roteamentoalgoritmo é
determinado usando o tipo de troca. Temos cinco tipos de trocas no AMQP. Observe que esses são os
tipos por padrão, mas você pode estender o AMQP e criar seu próprio tipo de troca. Os tipos de troca
com suas funcionalidades são listados da seguinte maneira.

O tipo de troca direta - amq.direct


O fluxo de O tipo de troca direta (como mostrado na captura de tela a seguir) é o seguinte:

1 Uma fila de mensagens é ligada à troca usando uma chave de roteamento, K.

2 Em seguida, um editor envia ao Exchange uma mensagem com a chave de roteamento, R.

3 A mensagem é passada para a fila de mensagens se K for igual a R.



https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 7/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

Roteamento Direto do Exchange

O tipo de troca de fan-out - amq.fanout


O fluxo de O tipo de troca direta (como mostrado na captura de tela anterior) é o seguinte:

1 Uma fila de mensagens é ligada à troca sem argumentos.

2 Sempre que um editor envia uma mensagem ao Exchange, a mensagem é transmitida às filas de
mensagens incondicionalmente:



https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 8/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

Roteamento Exchange Fanout

O tipo de troca de tópico - amq.topic


O fluxo de O tipo de troca direta (como mostrado na captura de tela anterior) é o seguinte:

1 Uma fila de mensagens é vinculada ao Exchange usando um padrão de roteamento, P.

2 Um editor envia a troca uma mensagem com a chave de roteamento, R.

3 A mensagem é passada para a fila de mensagens se R corresponder a P.

4 O algoritmo de correspondência funciona da seguinte maneira: A chave de roteamento usada


para uma troca de tópico deve consistir em zero ou mais palavras delimitadas por pontos, como
"news.tech". O padrão de roteamento funciona como uma expressão regular, como "*"
corresponde à palavra única e # corresponde a zero ou mais palavras. Por exemplo, "news. *"
Corresponde ao "news.tech".

O tipo de troca de cabeçalhos - amq.match



https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 9/10
08/08/2019 Advanced Message Queuing Protocol (AMQP) - Mastering RabbitMQ

Cabeçalhos O Tipo de Troca é o tipo de troca mais poderoso no AMQP. Os cabeçalhos trocam
mensagens de rota com base nos cabeçalhos de mensagens correspondentes. O Exchange ignora a
chave de roteamento. Sempre que criamos as trocas, especificamos os cabeçalhos relacionados nas
trocas, para que os cabeçalhos da mensagem sejam combinados com os cabeçalhos de troca usando o
argumento "x-match". Nós estaremos olhando para este tipo de trocanos capítulos de clientes.

Roteamento do Exchange de Tópico

 Seção anterior (/book/application_development/9781783981526/3/ch03lvl1sec22/messa

Próxima seção  (/book/application_development/9781783981526/3/ch03lvl1sec24/summ



https://subscription.packtpub.com/book/application_development/9781783981526/3/ch03lvl1sec23/advanced-message-queuing-protocol-amqp 10/10

Você também pode gostar