RabbitMQ: Introdução

Introdução ao Stackhero para RabbitMQ

👋 Bem-vindo à documentação da Stackhero!

A Stackhero oferece uma solução RabbitMQ cloud pronta para uso que proporciona uma série de benefícios, incluindo:

  • Acesso completo à interface web do RabbitMQ para gerir utilizadores, vhosts e permissões.
  • Filas ilimitadas sem limitações de tempo de retenção.
  • Suporte para os protocolos AMQP, MQTT, STOMP e WebSocket.
  • Muitos plugins incluídos, como Delayed Message Exchange, Message Deduplication e Consistent-hash Exchange.
  • Atualizações fáceis com apenas um clique.
  • Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.

Poupe tempo e simplifique a sua vida: leva apenas 5 minutos para experimentar a solução de hospedagem cloud RabbitMQ da Stackhero!

RabbitMQ é um servidor de message broker robusto projetado para simplificar a troca de mensagens entre vários serviços, seja de forma assíncrona ou síncrona. Ao permitir que as aplicações deleguem ações demoradas ou paralelizem tarefas, o RabbitMQ pode melhorar significativamente o desempenho das aplicações, simplificar a escalabilidade e aumentar a fiabilidade geral.

RabbitMQ facilita a implementação eficaz de uma arquitetura de microserviços, abordando os desafios comuns associados a essas configurações. O seu vasto ecossistema inclui uma riqueza de plugins que podem expandir as suas capacidades.

Além disso, o RabbitMQ suporta várias bibliotecas de clientes, permitindo conexões a partir de praticamente qualquer linguagem de programação, incluindo Java, Spring, .NET, Ruby, Python, PHP, Node.js, Go, Rust, e mais.

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.

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.

RabbitMQ é particularmente benéfico em cenários como:

  1. Execução de tarefas demoradas
  2. Escalabilidade da sua aplicação
  3. Melhoria da fiabilidade do sistema

Se a sua aplicação envia e-mails, gera ficheiros PDF, realiza cálculos longos ou requer paralelização de tarefas, o RabbitMQ pode ser a solução ideal para atender às suas necessidades.