0

RabbitMQ - O que é? Como funciona? Quando utilizar?

Renan Fretta
Renan Fretta

1. Introdução


O RabbitMQ é um sistema responsável pelo recebimento, guarda, envio e entrega de mensagens entre aplicações.


Também conhecido como sistema de mensageria , que é a forma de comunicação baseada em eventos, utilizada para comunicação de sistemas distribuídos.


Fazendo uma analogia com o mundo real, pense no funcionamento de uma agência dos correios. Primeiro o remetente posta uma correspondência. Em seguida a agência organiza e executa toda a logística. Por fim, um funcionário faz a entrega e os devidos controles de recebimento ou de impossibilidade de entrega. Todo este cenário é exatamente o trabalho e gerenciamento que o RabbitMQ faz.


O RabbitMQ é composto por três componentes, são eles:

  • Exchanges: locais onde as mensagens são postadas.
  • Bindings: conjunto de regras com objetivo de classificar as mensagens em filas de espera.
  • Queues: filas de espera que tem o objetivo de organizar as mensagens para efetuar a entrega para o destinatário correto.



Imagine um remetente (Producer) que posta uma carta (Message) em uma agência dos correios (Exchange) para um destinatário (Consumer). Após recebimento na agência, a carta passa por um processo de triagem (Bindings) que determina qual fila de espera (Queue) é adequada para a entrega ao destinatário.


2. Tipos de Exchanges


O RabbitMQ possui quatro tipos de exchanges: Direct, Fanout, Topic e Headers.

Cada tipo roteia a mensagem de uma forma específica, utilizando diferentes parâmetros e configurações. Por este motivo é importante conhecer cada tipo para aplicá-los de forma adequada as necessidade do projeto.


Resumidamente:

  • Direct: a mensagem é roteada para as filas cuja chave de ligação corresponde exatamente à chave de roteamento da mensagem.
  • Fanout: cópias da mensagem são enviadas para todas as filas vinculadas.
  • Topic: a mensagem é roteada utilizando um curinga entre a chave de roteamento e o padrão de roteamento especificado na ligação.
  • Headers: o roteamento é feito utilizando atributos do cabeçalho da mensagem.


3. Configuração do ambiente local


Utilizaremos a ferramenta RabbitMQ Management para criar os exemplos que apresentarei nos artigos seguintes.


Rodaremos o RabbitMQ utilizando o docker. Basta abrir o terminal no mesmo local do arquivo docker-compose.yml disponibilizado abaixo e digitar o comando docker-compose up.

Observação: Coloquei também a configuração do portainer, uma ferramenta para você gerenciar pelo navegador os containers docker.


Após subir, acesse:

  • RabbitMQ Management: http://localhost:15672 - Usuário: guest - Senha: guest
  • Portainer: http://localhost:9000 - Usuário: admin - Senha: password


Conteúdo do arquivo: docker-compose.yml


version: "3.3"
	services:
	  rabbitmq:
	    image: rabbitmq:3-management-alpine
	    container_name: 'rabbitmq'
	    ports:
	        - 5672:5672
	        - 15672:15672
	    # User: guest Password: guest
	  portainer:
	    image: portainer/portainer-ce
	    container_name: portainer
	    ports:
	      - "9000:9000"
	    # User: admin Password: password
	    command: --admin-password "$$2y$$05$$arC5e4UbRPxfR68jaFnAAe1aL7C1U03pqfyQh49/9lB9lqFxLfBqS"
	    volumes:
	      - /var/run/docker.sock:/var/run/docker.sock
0
0

Comentários (0)

None

Brasil