Introdução ao RabbitMQ

📑 Sobre
No assunto de hoje vamos falar sobre o RabbitMQ, que tem como principal funcionalidade realizar o transporte de dados através de mensagens assíncronas, e essas mensagens são realizadas através do protocolo
AMQP (Advanced Message Queuing Protocol)
.
📚 Principais conceitos
⭐ Vamos agora para os principais conceitos associados ao RabbitMQ:
Fila: As filas são armazenadas e consumidas de acordo com a prioridade definida. A fila é uma das principais características, que podem ter valor verdadeiro ou falso, ou seja podem ser enviadas ou não conforme definido na Routing Key.
Durável: A fila sempre vai existir mesmo que o message broker reinicie. O Message broker possibilita que sistemas e serviços se comuniquem e troquem informações. O message broker faz isso convertendo mensagens entre protocolos. Isso permite que serviços conversem uns com os outros.
Auto-Delete: A fila quando tiver apenas um consumidor e ele se desinscrever, então a fila é apagada.
Exchange: São os agentes responsáveis por destinar as mensagens para as 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 ou uma chave, o exchange poderá decidir como destinar a mensagem com base nos Bindings definidos.
📚 Tipos de Exchange
⭐ Direct Exchange
Esta exchange tem um comportamento de enviar mensagens que possuem a mesma rota nas filas associadas.
Quando uma nova mensagem aparece, o direct exchange encaminha para a fila específica.
Binding Key
Precisamos criar um bind para conectarmos uma fila a uma exchange, esse bind faz a relação entre uma fila e uma exchange.
Routing key
Nesse bind também podemos criar uma chave chamada routing key, para encaminhar as nossas mensagens para uma fila específica.
Simulador
Você pode simular essas relações pelo site tryrabbitmq.com
caso tenha dúvidas sobre comportamento das exchanges e filas.
⭐ Fanout Exchange
Quando enviamos uma mensagem para a exchange, ela cai para todas as filas ligadas a ela.
⭐ Topic Exchange
Essa exchange é uma das mais flexíveis, nos permite enviar as mensagens de acordo com o assunto. E com base na forma que você nomeia as routing keys também é possível criar regras e relações entre os sistemas.
Por exemplo: routing key (x._); routing key (_.z); routing key (_.y._).
Então se nós precisamos enviar uma mensagem para a exchange, é possível criar uma condição baseada na routing key, por exemplo, o setor de compras precisa receber uma mensagem específica, podemos definir para que somente ele a receba. Ou se você enviar uma mensagem com uma chave, somente a exchange relativa a essa chave irá recebê-la.
O Topic Exchange possui uma relação bastante flexível para encaminhar as nossas mensagens, diferente do exchange Direct que encaminha as mensagens que possuem exatamente a mesma rota das filas associadas.
⭐ Simulando o mensageiro:
📚 Onde usar o RabbitMQ
⭐ Podemos usar RabbitMQ para fazer a comunicação entre aplicações, pois é extremamente rápido e seguro.
Quando sabemos que para processar a requisição que o usuário solicitou vai demorar, e para não deixar o usuário esperando, podemos enviar para uma fila para ser processada. E assim que for processada o sistema nos avisará com uma mensagem. Podemos usar o RabbitMQ nas nossa aplicações para facilitar o trabalho de envio de mensagens, emails, arquivos, etc. A aplicação envia os dados que precisam ser processados para o RabbitMQ, ele armazena e disponibiliza as mensagens para a outra aplicação.
🔗 Referências
Você pode estudar um pouco mais do assunto nos links:
Se você curtiu esse conteúdo deixe o seu like e compartilhe com a galera. 😋
comments powered by DisqusDirceu Heineck.