O RabbitMQ é um middleware de mensagens distribuído desenvolvido na linguagem Erlang e de código aberto. Ele suporta o Protocolo Avançado de Filas de Mensagens (AMQP) e bibliotecas de cliente em várias linguagens de programação como Java, Golang, PHP e Python.

Características

  • Confiabilidade: Garante confiabilidade por meio de persistência de mensagens, suporte a transações, reconhecimento de consumo e transmissão, etc.
  • Mecanismo de Roteamento: Suporta modelos comuns de assinatura e consumo, como transmissão, assinatura, correspondência de cabeçalho, etc.
  • Escalabilidade: Múltiplos nós RabbitMQ podem formar um cluster e expandir dinamicamente o cluster de acordo com as necessidades reais do negócio.
  • Alta Disponibilidade: Filas podem ser configuradas como espelhos em máquinas no cluster, mantendo as filas disponíveis em caso de problemas com alguns nós.
  • Múltiplos Protocolos: Além do suporte nativo ao AMQP, o RabbitMQ também suporta vários protocolos de middleware de mensagens, como STOMP, MQTT, etc.
  • Clientes Multilíngues: O RabbitMQ suporta quase todas as linguagens comumente usadas, como Java, Python, Ruby, PHP, C#, JavaScript, etc.
  • Interface de Gerenciamento: O RabbitMQ fornece uma interface amigável para monitorar e gerenciar mensagens e nós do cluster.
  • Mecanismo de Plugin: O RabbitMQ fornece muitos plugins para extensões extensivas, e os usuários também podem escrever seus próprios plugins.

Principais Casos de Uso

Processamento Assíncrono

Partes não essenciais ou menos importantes do processo de negócios podem ser notificadas de forma assíncrona para o sistema alvo usando notificação de mensagens, permitindo que o processo de negócios principal responda prontamente sem esperar sincronamente pelos resultados do processamento de outros sistemas.

Desacoplamento de Aplicativos

A expansão do negócio pode ser alcançada com base em mecanismos de assinatura de mensagens. Por exemplo, em um cenário de pedidos de comércio eletrônico, quando um usuário faz um pedido, uma mensagem de pedido é gerada. O módulo do depósito pode se inscrever na mensagem do pedido para envio, o módulo de pontos pode se inscrever na mensagem do pedido para adicionar pontos, e o módulo de SMS pode se inscrever na mensagem do pedido para enviar mensagens de texto, e assim por diante.

Redução de Pico

Como pode haver diferenças nas capacidades de processamento de sistemas a montante e a jusante, as filas de mensagens podem atuar como um regulador para permitir que os sistemas a jusante lidem com o tráfego de forma constante.

Por exemplo, no caso de pagamento bem-sucedido de um pedido e notificação do depósito para envio, se o módulo de pedidos atual suportar uma alta concorrência de 1000 e o envio de depósito suportar apenas 100, a introdução de uma fila de mensagens pode permitir que o módulo de depósito se inscreva na mensagem do pedido e lide com o envio lentamente em uma fila.

ps: É como ficar na fila para o metrô.