Eu tenho um sistema com um remetente MSMQ (gera cerca de 10k mensagens / seg) e um receptor MSMQ (2k mensagens / seg). Gerar e enviar mensagens é rápido, a leitura e o processamento são lentos. Por isso, quero colocar um balanceador de carga e usar alguns receptores. No momento, as mensagens são formatadas em XML, uma vez que eu resolvo o balanceamento de carga e planejo mudar para o formatador binário.
Problema: a mensagem com um rótulo específico (ou, se possível, o valor do tag XML interno) deve ir exatamente para o mesmo receptor o tempo todo. A situação em que o servidor está inativo está fora do escopo desta questão (bônus se você souber como lidar com isso).
Eu uso o HAProxy para outro balanceamento de carga MSMQ round robin, e isso funciona bem no modo TCP. Gostaria de saber se posso reutilizá-lo para essa situação.
Pergunta: como configurar o HAProxy para balancear a carga de mensagens MSMQ com base no rótulo ou no valor de tag formatado em XML dentro de uma mensagem. Mensagens com o mesmo rótulo devem ir para o receptor constante. Existem outras alternativas?
Amostra:
message [Label="server1"] [XML BODY ...] => LB => server1
message [Label="server2"] [XML BODY ...] => LB => server2
ou similar ao que o RabbitMQ faz para "troca direta"
Fontedaimagem: