Criando uma aplicação com RabbitMQ

Criando uma aplicação com RabbitMQ

O RabbitMQ é um software que é usado como um mediador entre microsserviços por empresas para que diferentes partes de um sistema possam se comunicar de forma segura e rápida, permitindo que seja enviada a mesma requisição para diferentes serviços consumidores ou que sejam enfileiradas enquanto o serviço consumidor ainda não está disponível. Ele é muito bom para lidar com grandes quantidades de dados e suporta muitos tipos de comunicação.

Muitas empresas usam o RabbitMQ em setores como finanças, telecomunicações, saúde e tecnologia. Ele ajuda as empresas a se comunicarem de forma mais eficaz. Além disso, ele também tem muitas funcionalidades diferentes e úteis.

Caso você tenha interesse em desenvolver sistemas distribuídos, ser um profissional de DevOps ou um arquiteto de software, aprender sobre o RabbitMQ pode ser muito útil para você. Ele pode te ajudar a melhorar suas habilidades e dar a você uma vantagem no mercado de trabalho.

Algumas das maiores empresas de tecnologia do mundo, como o Uber, o Google e a Netflix usam RabbitMQ em suas arquiteturas de software. Mas afinal, como ele é usado na prática?


Para que é usado o RabbitMQ?


Por ter alta capacidade de processamento e muitas ferramentas, o RabbitMQ é uma ferramenta importante para trabalhar com dados. Ele normalmente é usado por sua capacidade de enfileirar requisições e impedir que dados sejam perdidos. Desta forma, também é muito usado para chats, serviços de pagamento e diversas outras empresas.

No caso do Uber, a tecnologia é usada para processar milhões de mensagens por segundo em sua arquitetura de microsserviços. Já o Google usa o RabbitMQ em seus sistemas de gerenciamento de Big Data, permitindo que as informações sejam processadas e compartilhadas de forma eficiente. Já a Netflix usa o RabbitMQ como parte de sua arquitetura de microsserviços, facilitando a comunicação eficiente entre os diferentes serviços do aplicativo.

Essas empresas confiam no RabbitMQ para a comunicação entre seus sistemas, permitindo que eles processem grandes quantidades de dados de maneira rápida e bem pensada. O uso dessa tecnologia mostra a importância que ela tem para empresas que buscam uma solução confiável e escalável para lidar com a comunicação entre seus sistemas distribuídos.

Como o RabbitMQ funciona?

O RabbitMQ é um software de mensageria que funciona com base no padrão AMQP (Advanced Message Queuing Protocol). Ele é responsável por facilitar a comunicação entre diferentes componentes de um sistema distribuído, permitindo que as aplicações enviem e recebam mensagens de forma confiável e escalável. Como dito anteriormente, ele é confiável pois evita que os dados sejam perdidos e é escalável pois podemos acumular diversas requisições na fila sem derrubar o servidor.

O funcionamento do RabbitMQ começa com o Produtor (Producer), que é responsável por enviar as mensagens para o servidor do RabbitMQ. Essas mensagens são enviadas para uma Exchange, que é um componente responsável por receber as mensagens e encaminhá-las para a fila correta. As Exchanges podem trabalhar com diferentes tipos de roteamento, como fanout, direct, topic e header, permitindo que as mensagens sejam direcionadas para as filas de forma personalizada.

As Filas (Queues) são o local onde as mensagens são armazenadas até que sejam processadas pelo Consumidor (Consumer). Os Consumidores podem se conectar às filas para receber e processar as mensagens que estão aguardando. É possível ter vários consumidores trabalhando em uma mesma fila, garantindo que as mensagens sejam processadas de forma rápida e eficiente.

Para direcionar as mensagens para as filas corretas, o RabbitMQ utiliza o conceito de Binds. O Bind é uma conexão entre a Exchange e a fila, permitindo que as mensagens sejam encaminhadas para a fila correta. Para que isso aconteça, é necessário definir uma Routing Key, que é uma chave que permite identificar a mensagem e direcioná-la para a fila correta.

O RabbitMQ também possui outras funcionalidades, como o suporte a transações e mensagens confirmáveis, que permitem que as aplicações possam garantir que as mensagens sejam recebidas e processadas com sucesso.

Em resumo, ele possui diversos conceitos, como Produtor, Consumer, Exchange, fila, Binds, Routing Key e outras funcionalidades, tornando-se uma opção popular para empresas que buscam soluções robustas e confiáveis de mensageria.

Como criar uma aplicação Node com RabbitMQ

Para facilitar iremos rodar o RabbitMQ no Docker, certifique-se de ter o Docker instalado e rode o seguinte comando:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management

Após isso entre na url http://localhost:15672/.

O usuário e senha padrão são:

usuario: guest.

senha: guest.

Após logar, crie uma fila com a respectiva Routing Key, que posteriormente conectará o RabbitMQ à aplicação e crie a Exchange, que irá enviar essas requisições para as filas corretas.

Com o RabbitMQ configurado, podemos partir para o código JavaScript.

Primeiro crie um diretório e rode o seguinte comando no terminal:

npm init -y

Em seguida:

npm install amqplib

Com as dependências instaladas, criaremos os arquivos que servirão para a comunicação com o RabbitMQ.

mkdir consumer

Agora criaremos 3 Consumers:

Consumer 1

Consumer 2


Consumer 3


Basicamente, o código estabelece uma conexão com o servidor RabbitMQ local, cria um canal e, em seguida, declara uma fila com o nome, por exemplo, filaDoBob que se conectará a uma troca (exchange) com o nome "gomesEx", usando uma chave de roteamento (routing key) "pagamento".

Depois o código consome a mensagem da fila especificada e imprime seu conteúdo no console. O parâmetro noAck é usado para confirmar se a mensagem foi recebida pelo consumidor e pode ser excluída da fila, pois não usaremos neste projeto.

Este exemplo mostra bem como funciona uma operação básica de consumir uma mensagem de uma fila RabbitMQ e pode ser útil como ponto de partida para a criação de um aplicativo de consumo de mensagens mais complexo.

Agora crie o Producer:

mkdir producer


Com essas partes feitas e o RabbitMQ atuando como intermediador, conseguiremos usar a funcionalidade de Mensageria.

Altere o package.json e teste a aplicação.


Para testar, rode os consumers com os comandos:

npm run consumer1

Outro terminal:

npm run consumer2

Outro terminal:

npm run consumer3

Com os consumers rodando teste, o producer alterando a RoutingKey e vendo para quais consumers a mensagem chega.


Conclusão

Após ter concluído a aplicação, aprendemos que RabbitMQ é uma ferramenta de mensageria de código aberto muito útil para evitar diversos problemas.

Diante disso, aprender o RabbitMQ é importante para desenvolvedores e arquitetos de software que desejam construir sistemas distribuídos que possam escalar facilmente e ter alta disponibilidade. Com a ajuda do RabbitMQ, os desenvolvedores podem separar os componentes do sistema em serviços distintos que se comunicam de maneira assíncrona, tornando o sistema mais flexível, tolerante a falhas e escalável.

Além disso, o RabbitMQ pode ser usado para integrar softwares de diferentes linguagens e construir aplicativos e serviços, desde que essas linguagens de programação suportem os protocolos de comunicação que o RabbitMQ oferece.

Em resumo, aprender RabbitMQ é importante para desenvolvedores que desejam ter uma ferramenta a mais para resolver problemas de requisições excessivas ou mal pensadas, com uma tecnologia que pode ser facilmente adaptada às necessidades do mercado que está em constante evolução e mudança.

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.