A pesquisa longa é sempre benéfica, pois resulta em um desempenho superior a um custo reduzido para a maioria dos casos de uso. Infelizmente, você não pode controlar o número de mensagens que cada trabalhador recebe da fila devido à natureza distribuída da fila. Mas existem algumas soluções alternativas do lado do cliente que podem ajudá-lo a equilibrar a carga para os trabalhadores.
Então, foi isso que fizemos como solução alternativa para isso:
Como uma das soluções alternativas, o script de poller pode controlar o número de mensagens que cada trabalhador recebe. Um limite pode ser definido para o número máximo de mensagens que cada trabalhador pode manipular. Esse limite pode ser um valor dinâmico e provavelmente seria ApproximateNumberOfMessagesVisible
dividido pelo número de pollers / scripts de poller. Em seguida, você pode manter o tempo limite da visibilidade com qualquer valor mais baixo. Se todos os scripts do poller fizerem uma sondagem longa ao mesmo tempo, um dos pollers agarra a mensagem, decide que está sobrecarregado com base no limite, não exclui a mensagem, a mensagem volta à fila e pode ser capturado por outros pesquisadores que ainda têm capacidade para capturar a mensagem. O parâmetro threshold pode ser ajustado para atender às necessidades do aplicativo.
Além disso, ter um mecanismo de failover também ajudaria, como a descrição das respostas neste post . No entanto, não posso me permitir ter filas de failover em uma arquitetura distribuída, pois isso aumentaria a complexidade. Portanto, a solução alternativa acima foi uma ideia melhor para minha equipe.