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.
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.