Executando verificação de segurança...
4

Como fazer uma fila avançada com limitadores individuais e escalavel.

Olá pessoal, tenho um problema e estou buscando ajuda ou uma possível ferramenta que me ajude com isso, tenho um sistema de envio de mensagens e estou com alguns desafios na fila, estou usando node em cluster com bullmq para fazer o gerenciamento, basicamente um loop que adiciona os envios na fila a cada segundo, porém tem dado alguns problemas e não tenho a garantia de um limite de execuções por segundo, darei um exemplo do que estou buscando abaixo.

Exemplo: Crio um evento de 35k execuções em uma API (Não permite bulk) logo é preciso fazer uma requisição por vez com limite de 100 requisições por segundo, cada requisição pode ter um tempo de execução diferente, logo a fila precisa lidar com um limite de execuções por segundo e além disso múltiplos eventos acontecendo ao mesmo.

No geral precisa ter um limitador de execuções por segundo, e ser distribuído para poder ter várias execuções acontece ao mesmo tempo, ex: duas execuções de 10k envios cada um com seu limite de 100 envios por segundo individual.

É claro com a ajuda de vocês se eu encontrar uma boa solução postarei aqui um explicativo de como desenvolver.

Carregando publicação patrocinada...
1
1

Acredito que você pode usar um algoritmo de rate limit no serviço que faz a publicação das mensagens na fila. Também dá para colocar esse rate limit nos consumidores mas você vai precisar fazer com que as mensagens que estão sendo consumidas sejam pausadas ou que você rejeite essas mensagens até você estar apto para poder enviar e consumir novamente. Existem vários algoritmos de rate limit que você pode ver na internet. Para você ver o a arquitetura desses sistemas, você pode pesquisar por rate limit system design que tem vários cases interessantes