Como afirma Michael, esses dois são muito diferentes em função e capacidade.
Sistemas de enfileiramento de mensagens
A principal função dos serviços de enfileiramento de mensagens é permitir a comunicação assíncrona entre diferentes partes de um aplicativo. Os servidores MQ normalmente permitem configurar um número arbitrário de regras de roteamento, filas, etc., para as quais as mensagens são publicadas por partes de um aplicativo e assinadas por outras partes do aplicativo.
Tome, por exemplo, um aplicativo de transcodificação de vídeo. As funções básicas necessárias são:
- o usuário faz o upload de um arquivo de vídeo
- sistema transcodifica vídeo em um formato diferente O
- sistema disponibiliza vídeos transcodificados para download
Após a conclusão da etapa 1, você realmente deseja que a sessão do navegador do usuário seja interrompida por 45 minutos enquanto a transcodificação ocorre? Não, não pense assim. Portanto, em vez de executar a transcodificação de forma síncrona, você despeja uma mensagem em uma fila de mensagens que há trabalho a fazer. Em seguida, essa mensagem é capturada pela parte de processamento de back-end de seu aplicativo, que realiza a transcodificação e, quando concluída, publica uma mensagem "Estou pronto!" mensagem para uma fila diferente, que aciona uma terceira parte do seu aplicativo para enviar por e-mail ao usuário que o trabalho está concluído.
Além de separar partes diferentes de seu aplicativo, os sistemas MQ permitem que os jobs fiquem bem filados. Digamos que seu hardware permita que você processe um vídeo a cada 30 minutos, mas, durante o pico de carga, seus usuários enviam mais do que isso. O uso de um MQ permite que esses trabalhos sejam enfileirados normalmente e sejam manipulados em sequência, já que o backend pode fazê-lo.
Sistemas de balanceamento de carga
A principal função do balanceamento de carga é fornecer solicitações recebidas dos clientes e distribuir essas solicitações a um ou mais servidores de aplicativos de back-end.
Conclusão
Para colocar as coisas de outra forma, os serviços de enfileiramento de mensagens se concentram na comunicação assíncrona entre partes de aplicativos distintos, enquanto os serviços de balanceamento de carga se concentram na comunicação síncrona entre clientes e um ou mais um pool de servidores back-end.