Skip to content

Paulo-Ricard0/RabbitMQ-Estudos

Repository files navigation

Banner RabbitMQ

Nesse repositório contém meus estudos sobre RabbitMQ e exemplos de implementação utilizando diferentes algoritmos de roteamento de mensagens.


📋 Índice


Sobre RabbitMQ

O que é RabbitMQ

RabbitMQ é um agente de mensagens open-source amplamente utilizado que implementa o protocolo Advanced Message Queuing Protocol (AMQP). Ele é utilizado para enviar, receber e armazenar mensagens entre sistemas distribuídos, proporcionando uma forma eficiente e confiável de comunicação assíncrona entre diferentes componentes de software.

Como funciona RabbitMQ

RabbitMQ funciona como um intermediário para mensagens, onde produtores enviam mensagens para exchanges. As exchanges roteiam as mensagens para filas com base em regras de roteamento. Consumidores então recebem as mensagens dessas filas. O RabbitMQ garante que as mensagens sejam entregues de forma confiável e permite a implementação de diferentes padrões de comunicação, como publish/subscribe, request/reply e round robin.

#

Casos de Uso

  • Processamento de Tarefas em Segundo Plano: Utilizado para delegar tarefas de longa duração para serem processadas em segundo plano.
  • Comunicação entre Microserviços: Facilita a comunicação assíncrona entre diferentes microserviços em uma arquitetura distribuída.
  • Filas de Mensagens: Gerencia filas de mensagens em sistemas distribuídos, garantindo a entrega e o processamento ordenado.
  • Balanceamento de Carga: Distribui tarefas uniformemente entre vários trabalhadores para otimizar o uso de recursos.

Exchanges

Explicação

No algoritmo Round Robin, as mensagens são distribuídas uniformemente entre os consumidores disponíveis. Cada mensagem é entregue ao próximo consumidor na fila, garantindo uma distribuição equilibrada de carga.

Como funciona

  1. Producer: Envia mensagens para a exchange.
  2. Exchange: Distribui as mensagens sequencialmente entre os consumidores, um de cada vez.
  3. Consumer: Cada consumidor recebe mensagens na ordem em que são enviadas pela exchange.

#

Casos de Uso

  • Distribuição de Tarefas: Ideal para balancear a carga de trabalho entre vários trabalhadores.
  • Processamento Paralelo: Utilizado para dividir o processamento de grandes volumes de dados entre vários consumidores.

Explicação

A exchange do tipo Fanout envia todas as mensagens recebidas para todas as filas ligadas a ela, sem considerar qualquer chave de roteamento. Este padrão é útil para casos onde uma mensagem precisa ser entregue a múltiplos consumidores.

Como funciona

  1. Producer: Envia mensagens para a exchange Fanout.
  2. Exchange: A exchange Fanout retransmite cada mensagem para todas as filas que estão conectadas a ela.
  3. Consumer: Todos os consumidores recebem todas as mensagens enviadas para a exchange.

#

Casos de Uso

  • Broadcast de Mensagens: Ideal para enviar notificações ou atualizações a todos os sistemas conectados.
  • Sistemas de Log: Utilizado para enviar logs a diferentes sistemas de análise e armazenamento simultaneamente.

Explicação

A exchange do tipo Direct roteia mensagens para filas com base em uma chave de roteamento específica. Apenas as filas que estão vinculadas à exchange com a mesma chave de roteamento receberão a mensagem.

Como funciona

  1. Producer: Envia mensagens para a exchange Direct com uma chave de roteamento específica.
  2. Exchange: A exchange Direct encaminha as mensagens para as filas que possuem uma chave de roteamento correspondente.
  3. Consumer: Os consumidores recebem mensagens apenas das filas cujas chaves de roteamento correspondem às chaves usadas ao enviar as mensagens.

#

Casos de Uso

  • Roteamento de Mensagens: Utilizado quando há necessidade de enviar mensagens a consumidores específicos com base em critérios definidos.
  • Filtragem de Logs: Permite a separação de logs em diferentes níveis (erro, aviso, info) e envio a diferentes filas para processamento especializado.

Explicação

A exchange do tipo Topic permite que as mensagens sejam roteadas para uma ou mais filas com base em padrões de chave de roteamento que utilizam curingas. Isso é útil para casos em que as mensagens precisam ser filtradas e enviadas para filas específicas com base em padrões de tópicos.

Como funciona

  1. Producer: Envia mensagens para a exchange Topic com uma chave de roteamento contendo padrões.
  2. Exchange: A exchange Topic usa curingas nas chaves de roteamento para determinar quais filas devem receber cada mensagem.
  3. Consumer: Os consumidores recebem mensagens das filas que correspondem aos padrões definidos nas chaves de roteamento.

#

Casos de Uso

  • Sistemas de Log: Permite a entrega de logs para filas específicas com base em padrões, como níveis de severidade ou origens de log.
  • Roteamento Dinâmico: Utilizado para enviar mensagens para diferentes filas com base em padrões de chave de roteamento.

Explicação

O padrão Request-Reply no RabbitMQ é utilizado para permitir a comunicação síncrona entre um cliente (requester) e um servidor (replier). Esse padrão é comum em arquiteturas de microserviços e sistemas distribuídos onde um serviço precisa solicitar dados ou executar uma operação em outro serviço e aguardar uma resposta.

Como Funciona

  1. Produção de Mensagem (Request)

    • O cliente (requester) envia uma mensagem de solicitação para uma fila ou exchange específica.
    • A mensagem inclui um identificador de correlação (correlation ID) e um endereço de resposta (reply-to), que é geralmente o nome de uma fila onde o cliente espera receber a resposta.
  2. Consumo da Solicitação

    • O servidor (replier) consome a mensagem de solicitação da fila.
    • O servidor processa a solicitação e gera uma resposta.
  3. Produção de Mensagem (Reply)

    • O servidor envia a mensagem de resposta de volta para a fila especificada no campo reply-to da mensagem original.
    • A resposta inclui o mesmo correlation ID para que o cliente possa associar a resposta com a solicitação correspondente.
  4. Consumo da Resposta

    • O cliente consome a mensagem de resposta da fila de resposta.
    • O cliente usa o correlation ID para associar a resposta com a solicitação original e processar os dados recebidos.

#

Casos de Uso

  • Microserviços: Comunicação síncrona entre microserviços, onde um serviço precisa solicitar dados ou operações de outro serviço.
  • Processamento de Solicitações: Aplicações que exigem respostas imediatas para as solicitações enviadas, como consultas a bancos de dados ou serviços externos.
  • Integração de Sistemas: Conectar sistemas legados onde é necessário enviar uma solicitação e esperar uma resposta para continuar o processamento.

voltar ao topo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages