Introdução aos Conceitos Básicos do RabbitMQ
Diagrama Conceitual do RabbitMQ
Explicação dos Conceitos
Mensagem
Uma mensagem é composta por um cabeçalho da mensagem (ou seja, informações de configuração adicionais) e um corpo da mensagem (ou seja, o conteúdo da mensagem).
Publicador
O produtor da mensagem, que é um aplicativo cliente que publica mensagens para uma troca.
Troca (Exchange)
Uma troca é usada para receber mensagens enviadas pelos produtores e encaminhar essas mensagens para filas no servidor.
Existem quatro tipos de trocas:
-
Tipo direto: Compara a chave de roteamento na mensagem com as chaves de roteamento associadas a todos os vínculos da troca. Se houver correspondência, a mensagem é enviada para a fila correspondente desse vínculo.
-
Tipo tópico: Compara a chave de roteamento na mensagem com as chaves de roteamento associadas a todos os vínculos da troca. Se houver correspondência, a mensagem é enviada para a fila correspondente desse vínculo.
-
Tipo fanout: Encaminha diretamente mensagens para as filas correspondentes de todos os vínculos, ignorando a chave de roteamento durante o encaminhamento.
-
Tipo de cabeçalho: Corresponde aos cabeçalhos na mensagem com os parâmetros associados a todos os vínculos da troca. Se houver correspondência, a mensagem é enviada para a fila correspondente desse vínculo (menos comumente usado, semelhante ao tipo direto).
Nota: Explicações detalhadas dos tipos de trocas serão fornecidas nas seções seguintes sobre modos de funcionamento. Isso é apenas uma visão geral.
Vínculo (Binding)
A relação usada para estabelecer uma conexão entre filas de mensagens e trocas.
Fila
Uma fila de mensagens usada para armazenar mensagens até que sejam entregues aos consumidores. Serve tanto como contêiner para mensagens quanto como ponto final para mensagens. Uma mensagem pode ser entregue a uma ou mais filas. As mensagens permanecem na fila, aguardando que os consumidores se conectem e as recuperem.
Conexão
Uma conexão de rede, como uma conexão TCP.
Canal
Um canal é uma conexão virtual estabelecida dentro de uma conexão TCP real. Todos os comandos AMQP são enviados por meio de canais, seja para publicar mensagens, inscrever-se em filas ou receber mensagens. Essa abordagem introduz o conceito de canais para reutilizar uma única conexão TCP, uma vez que estabelecer e encerrar conexões TCP é custoso para o sistema operacional.
Consumidor
O consumidor de mensagens, representando um aplicativo cliente que recupera mensagens das filas de mensagens.
Hospedagem Virtual
Uma hospedagem virtual representa um conjunto de trocas, filas de mensagens e objetos relacionados. É um domínio de servidor independente que compartilha o mesmo ambiente de autenticação e criptografia. Cada hospedagem virtual é essencialmente uma mini-versão de um servidor RabbitMQ, com suas próprias filas, trocas, vínculos e mecanismos de permissão.
As hospedagens virtuais são um conceito fundamental no AMQP e devem ser especificadas ao estabelecer uma conexão. A hospedagem virtual padrão para o RabbitMQ é /.
Nota: A Hospedagem Virtual é uma forma de estratégia de isolamento de recursos que permite a divisão de áreas isoladas múltiplas dentro do mesmo servidor RabbitMQ.
Corretor (Broker)
Representa a entidade física do servidor de fila de mensagens.