Чтобы справиться с регулированием в кластерной среде, обратите внимание на реализацию алгоритма сегмента токенов.
По своей сути, число X токенов помещается в сегмент каждый интервал времени Y.Каждый раз, когда вам нужно сделать что-то, что блокируется, вы удаляете токен из корзины.Если корзина пуста, вы блокируете, пока не получите токен.Отрегулируйте X и Y, чтобы обеспечить разумное регулирование.Это можно сделать с помощью пользовательского сервера.Я даже видел несколько реализаций, использующих преимущества Memcached.
Что касается приоритетной очереди, вы можете захотеть взглянуть на PriorityQueue или BlockingPriorityQueue.