Introdução ao RabbitMQ

Neste artigo vou apresentar uma introdução sobre o RabbitMQ, apresentando seus principais conceitos e funcionalidades.

Introdução

O RabbitMQ é um dos message broker de código aberto mais populares, sendo utilizado em empresas de todos os tamanhos.

Um message broker é um sistema que permite que diferentes componentes, como aplicações e aplicativos, se comuniquem entre si, trocando informações. Para isso, geralmente utilizam uma estrutura de fila de mensagens, que será a responsável por armazenar e ordenar mensagens enquanto os consumidores (como aplicativos ou aplicações) não as processam.

Voltando ao RabbitMQ: ele é leve, fácil de publicar em diversos ambientes, como localmente, on-premises e em nuvem, suportando diversos protocolos de mensageria. Por exemplo, para testes locais é bem simples de se criar uma instância utilizando Docker.

Como um dos princípios da mensageria, o RabbitMQ possibilita que aplicações se conectem entre si e escalem, de maneira desacoplada.

Por que utilizar?

Entre os principais benefícios de se utilizar o RabbitMQ, se encontram:

  • Confiabilidade, através de mecanismos como persistência de mensagens e confirmações de processamento (ACK);
  • Suporte a múltiplos protocolos, como AMQP e MQTT;
  • Leve;
  • Suporte a múltiplas linguagens, como C#, Java, Ruby, Python, JavaScript, e Go, com grande gama de bibliotecas;
  • Interface de gerenciamento intuitiva e fácil de utilizar;
  • Flexibilidade no roteamento de mensagens.

Além disso, existem os benefícios que estão associados a mensageria, que por consequência se transferem ao RabbitMQ, como:

  • Desacoplamento na comunicação;
  • Possibilidade se utilizar padrões como Pub/Sub;
  • Maior resiliência;

Principais conceitos

Vamos agora para os principais conceitos associados ao RabbitMQ.

Fila: estrutura onde as mensagens são armazenadas e consumidas. Tem como principais características, que podem ter valor verdadeiro ou falso:

  • Durável: a fila segue existindo mesmo que o message broker reinicie;
  • Auto-Delete: quando a fila chegue a ter apenas um consumidor e ele se desinscreve, a fila é apagada;
  • Exclusiva: a fila é utilizada por apenas uma conexão, sendo apagada quando essa conexão for encerrada.

Exchange: são os agentes responsáveis por rotear as mensagens para filas, utilizando atributos de cabeçalho, routing keys ou bindings.

Binding: conexão utilizada para configurar uma relação entre uma fila e um exchange.

Routing Key: é um atributo adicionado ao cabeçalho da mensagem, servindo como um “endereço” que o exchange poderá decidir como rotear a mensagem com base nos Bindings definidos.

Como Instalar

A maneira mais fácil de se instalar e iniciar o RabbitMQ é através de um comando utilizando Docker. Extraí do próprio site do RabbitMQ o comando Docker abaixo para se iniciar o RabbitMQ e sua ferramenta de gerenciamento, que conta com uma interface Web.

# latest RabbitMQ 3.10
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management

Outras maneiras de instalar o RabbitMQ estão incluídas também na página de Downloads do site do RabbitMQ.

Após executar o serviço do RabbitMQ, basta navegar para a rota http://localhost:15672/, e a tela de login da interface Web da ferramenta de gerenciamento aparecerá.

Tela de login da interface Web do RabbitMQ

O login e senha padrões são guest e guest, respectivamente. Com isso, terá acesso a página principal. Ela será explorada em um artigo futuro.

Página principal da interface Web do RabbitMQ

Conclusão

Neste artigo foi apresentado o RabbitMQ, junto com seus principais benefícios, conceitos, e como instalar e iniciar ele com Docker. Finalmente, acessamos a interface Web da ferramenta de gerenciamento, realizando o login e visualizando a página principal.