RabbitMQ: Exemplos de uso do RabbitMQ
Esta documentação faz parte do guia Introdução. Consulte o guia completo aqui: Introdução ao Stackhero para RabbitMQ.
Imagine uma aplicação que permite aos utilizadores descarregar todas as faturas do ano passado com uma única ação. Esta tarefa envolve a geração de múltiplas faturas em PDF simultaneamente, o que pode ser bastante demorado. Com o RabbitMQ, uma aplicação pode enviar 12 mensagens com detalhes das faturas para um topic. Um sistema dedicado à geração de faturas responderá a estas mensagens, produzirá os ficheiros PDF e os devolverá ao RabbitMQ. Posteriormente, a aplicação recupera os PDFs e entrega-os ao cliente.
O verdadeiro poder deste sistema reside na sua capacidade de executar múltiplos scripts em simultâneo para gerar faturas. Com o mesmo código, pode processar estas 12 faturas em paralelo! Imagine 100 utilizadores a solicitar cada um as suas 12 últimas faturas ao mesmo tempo. Não se preocupe, o sistema está agora equipado para escalar e gerir inúmeros ficheiros PDF simultaneamente!
Agora, suponha que deseja enviar estas faturas por e-mail. Pode criar um script que aceite um endereço de e-mail e um ficheiro PDF como entradas, e depois envie o PDF para o e-mail especificado. Conecte este script de envio de e-mails ao RabbitMQ e configure o seu gerador de faturas para encaminhar os ficheiros PDF para o topic "emails". É tão simples quanto isso. A aplicação pode agora gerar e enviar dezenas de faturas de forma eficiente por e-mail.
A fiabilidade é outra vantagem chave. Se um script de e-mail falhar inesperadamente ao enviar uma fatura, o RabbitMQ garante que a fatura não se perde. Outro script de e-mail pode retomar a tarefa e completá-la sem problemas, mantendo a satisfação do utilizador. O RabbitMQ reforça tanto a fiabilidade quanto a consistência.
Existem inúmeros casos de uso. Se tiver múltiplos sistemas ou aplicações que requerem comunicação fiável, ou se precisar delegar tarefas demoradas a outros sistemas, o RabbitMQ pode ser a solução que necessita.
Exemplo de uso do RabbitMQ em aplicações de partilha de viagens ou entrega de comida
Em aplicações como Uber ou Lyft, quando um utilizador solicita uma viagem, várias informações são apresentadas:
- O preço da viagem
- A duração da viagem
- O tempo estimado de recolha
- O percurso
Estes componentes podem ser divididos em serviços separados, com o RabbitMQ a facilitar a comunicação entre serviços. Quando um utilizador solicita uma viagem, o ponto de partida e o destino são enviados a estes serviços, que calculam os dados necessários em paralelo. Os resultados são então apresentados ao utilizador à medida que ficam disponíveis. Se o cálculo da duração da viagem demorar mais tempo, as restantes informações serão ainda assim apresentadas rapidamente, minimizando a frustração do utilizador.
De forma semelhante, em aplicações como GrubHub ou Deliveroo, quando um utilizador seleciona comida, vários detalhes são apresentados:
- Disponibilidade dos pratos
- Tempo estimado de entrega
- Preço total do carrinho
Tal como no exemplo Uber/Lyft, estes aspetos podem ser geridos por serviços separados, utilizando o RabbitMQ para gerir as trocas de mensagens.