Możesz to osiągnąć za pomocą list Redis z dodatkową kolejką „wysyłki”, którą wszyscy pracownicy BRPOP
na ich pracę. Każde zadanie w kolejce wysyłania jest oznaczone oryginalnym identyfikatorem kolejki, a kiedy pracownik zakończy zadanie, przechodzi do tej oryginalnej kolejki i wykonuje RPOPLPUSH
do kolejki wysyłkowej, aby następne zadanie było dostępne dla każdego innego pracownika. W związku z tym kolejka wysyłania będzie miała maksymalnie num_queues elementy.
Jedną rzeczą, z którą będziesz musiał się uporać, jest początkowa populacja kolejki wysyłania, gdy kolejka źródłowa jest pusta. Może to być po prostu sprawdzenie wykonane przez wydawcę względem flagi „pusta” dla każdej kolejki, która jest ustawiona początkowo, a także ustawiona przez pracownika, gdy w oryginalnej kolejce nie ma nic do wysłania. Jeśli ta flaga jest ustawiona, wydawca może po prostu LPUSH
pierwsze zadanie bezpośrednio do kolejki wysyłkowej.