Можете да постигнете това с помощта на Redis списъци с допълнителна опашка за "изпращане", която всички работници BRPOP
за техните работни места. Всяко задание в опашката за изпращане е маркирано с оригиналния идентификатор на опашката и когато работникът завърши задачата, той отива в тази оригинална опашка и изпълнява RPOPLPUSH
на опашката за изпращане, за да направи следващата работа достъпна за всеки друг работник. Следователно опашката за изпращане ще има максимум num_queues елементи.
Едно нещо, с което ще трябва да се справите, е първоначалната популация на опашката за изпращане, когато изходната опашка е празна. Това може да бъде просто проверка, извършена от издателя срещу "празен" флаг за всяка опашка, която е зададена първоначално, и също така зададена от работника, когато в оригиналната опашка не е останало нищо за изпращане. Ако този флаг е зададен, издателят може просто LPUSH
първото задание директно в опашката за изпращане.