Você pode conseguir isso usando listas Redis com uma fila de "despacho" adicional que todos os trabalhadores
BRPOP
para seus trabalhos. Cada trabalho na fila de despacho é marcado com o ID da fila original e, quando o trabalhador conclui o trabalho, ele vai para essa fila original e executa RPOPLPUSH
na fila de despacho para disponibilizar o próximo trabalho para qualquer outro trabalhador. A fila de despacho terá, portanto, um máximo de num_queues elementos. Uma coisa que você terá que lidar é a população inicial da fila de despacho quando a fila de origem estiver vazia. Isso pode ser apenas uma verificação feita pelo editor em relação a um sinalizador "vazio" para cada fila que é definida inicialmente e também definida pelo trabalhador quando não há mais nada na fila original para despachar. Se este sinalizador estiver definido, o editor poderá apenas
LPUSH
o primeiro trabalho diretamente na fila de despacho.