Quando usar o Protocolo avançado de enfileiramento de mensagens como o RabbitMQ? [fechadas]

Respostas:

25

Imagine que você tem um serviço da web que pode aceitar muitos pedidos por segundo. Você também tem um sistema de contabilidade que faz muitas coisas, uma das quais está processando as solicitações provenientes do serviço da web.

Se você colocar uma fila entre o serviço da web e o sistema de contabilidade, poderá:

  • tem menos acoplamento entre os dois aplicativos, porque agora os dois aplicativos precisam conhecer os parâmetros de configuração do sistema de gerenciamento de filas e o nome da fila. Aqui está o problema: geralmente é mais provável que você mude para outro servidor algum aplicativo do que o sistema de gerenciamento de filas
  • se você receber muitas solicitações em pouco tempo, o sistema contábil poderá processá-las de qualquer maneira
  • persistem alguns pedidos se seu número se tornar realmente grande

Obviamente, você pode ter situações mais complexas em que o número de seus aplicativos é muito maior que dois e precisa gerenciar a comunicação entre eles.

Виталий Олегович
fonte
1
1) Como A é acoplado a B melhor que A acoplado a C e C acoplado a B?
28413 Charlie
2) Por que não colocar a fila no sistema contábil? Por que apresentar uma nova peça móvel da caixa preta que precisa de configuração adicional?
Charlie
2
@ Charlie sobre a pergunta 1, modifiquei minha resposta. Sobre a pergunta 2, o que exatamente você quer dizer com colocar a fila no sistema de contabilidade? Deseja usar uma estrutura de dados da fila? Nesse caso, você terá mais código para escrever para persistir. Deseja simular a fila usando uma tabela de banco de dados? Novamente, você precisará escrever um bom código para gerenciar essa tabela. Algo mais que eu não pensei?
226138 #
Erro de 1. Se a fila for colocada no serviço da Web ou a fila no aplicativo, um acoplamento permanecerá. Se, no entanto, a fila for externa a ambos, agora você terá o dobro do acoplamento e 50% mais sistemas para gerenciar / pontos de falha. Se uma fila de terceiros for selecionada, você também terá este novo pacote para aprender e configurar, e provavelmente ficará sobrecarregado por inúmeros recursos que você não tem interesse em usar, recursos que foram adicionados para tornar a fila de uso geral e útil para muito mais situações que a sua.
12123 Charlie
@Charlie, presumivelmente um único intermediário de mensagens seria usado entre vários sistemas. Ou haveria um único proxy para o corretor. (No nosso caso, estamos usando um único dispositivo de mensagens que pode lidar com milhões de mensagens por segundo para todos os nossos sistemas). Na verdade, isso cria maior dissociação porque uma mensagem é gerada por um sistema e qualquer sistema interessado pode receber essa mensagem e executar a lógica apropriada. O único acoplamento é a própria fila.
Michael Brown
16

Além de fornecer um buffer entre um serviço da Web e outro serviço de back-end, as filas de mensagens podem ser usadas para cenários mais avançados. O Rabbit MQ (e outros produtos maduros da Fila de mensagens também conhecidos como MOM - Middleware Orientado a Mensagens) pode ser configurado para rotear e distribuir mensagens de acordo com regras diferentes.

Por exemplo, a técnica de roteamento Pub-Sub permite que uma única fonte envie uma mensagem e muitos ouvintes a recebam. Isso é comumente usado pelo software de negociação de ações para manter os usuários atualizados.

Também devido ao fato de a maioria das MOMs possuir sdks para vários idiomas e plataformas, elas podem ser usadas para integrar aplicativos gravados em plataformas diferentes.

Esses são apenas alguns dos cenários habilitados pelos MOMs.

Michael Brown
fonte