RabbitMQ
Tags: javascript, rabbitmq, node
Published: 2021-10-11 14:24:28

Olá, hoje vou falar um pouquinho do que aprendi durante meu estudo e aprendizagem sobre o RabbitMQ que é uma das ferramentas de mensageria mais utilizadas atualmente.

Mas pra que serve isso?
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/919fpklonhuz13ckbwsl.png)

O RabbitMQ é um message broker utilizado para fazer a gestão e controle de envio e recebimento de mensagens, mas para entender melhor sobre ele você vai precisar entender o que é um message broker.

Bem, um message broker é uma ferramenta que possibilita a comunicação entre dois aplicativos, sistemas e até serviços de uma forma confiável e segura, não importando a linguagem em que eles foram desenvolvidos, ou até mesmo plataformas. 

Ele funciona como um intermediador na comunicação entre os dois aplicativos, permitindo que os remetentes se comuniquem sem saber onde um ou outro está, o remetente pode enviar uma mensagem e o destinatário estar inativo, porem assim que o destinatário ficar ativo o message broker vai enviar a mensagem pra ele facilitando o desacoplamento entre os serviços ou sistemas.

Pelo que entendi, os message broker trabalham com um esquema de fila.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b913x7igb47xz4ucb6cm.png)

O RabbitMQ faz a gestão e controle das filas utilizando o protocolo AMQP(Advanced Message Queuing Protocol), que é um protocolo avançado de enfileiramento de mensagens.

Esse protocolo envia e recebe as mensagens de forma assíncrona, Ele armazena as mensagens que chegam em uma fila, guardando elas exatamente na ordem em que elas chegaram até que os apps consumidores possam consumi-las. Após uma mensagem ser consumida ela é retirada da fila.  

O RabbitMQ utiliza um padrão para fazer a gestão das mensagens, que consiste em ter um publicador e um consumidor da mensagem, tentei representar na imagem a baixo rss..
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3tx6icnahckux9ujd9fq.png)

Bem, você deve estar se perguntando... mas como eu implemento isso? 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nw9ygk59zv7k5ccl72w8.gif)

Bora lá então, eu fiz uma pesquisa e consegui achar alguns exemplos práticos implementando um publicador e um consumidor, abaixo está um exemplo utilizando NodeJS retirado da própria documentação do RabbitMQ. 

Visite o link abaixo para ver exemplos com outras linguagens.
Link: <a>https://www.rabbitmq.com/getstarted.html</a>

Bem, mas antes de tudo você vai precisar instalar o RabbitMQ. Para fazer a instalação e subir ele local eu utilizei o tutorial no link abaixo e deu certinho.
Link: <a>https://www.vultr.com/docs/install-rabbitmq-server-ubuntu-20-04-lts</a>
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bg9idjnlbx0iolw1z2ra.png)

Agora vamos ao código rs rs, o exemplo abaixo está utilizando o <b>NodeJs</b> e eu deixei ele lá no meu GitHub faz uma visitinha lá, vlw...
<a>https://github.com/luizcrrds/messagingluizcrrds-node-rabbitmq</a>


<h5>Publicador:</h5>
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdtp7ohhhmf27d5k0ucz.png)

<h5>Consumidor:</h5>
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j16uwjsj07meea2j7q20.png)


<h3>Obrigado pela leitura, espero ter contribuído. Deixe o seu feedback!</h3>