Это одна из тех вещей, которую легко написать себе в точных спецификациях. Я написал игрушку здесь:
http://github.com/jrockway/app-queue
Я не уверен, что он больше компилируется, поскольку AnyEvent :: Subprocess значительно изменился с тех пор, как я его написал. Но вы можете украсть идеи.
По сути, я считаю, что инфраструктура в стиле RPC является лучшей. У вас есть сервер, который обрабатывает хранение данных. Затем клиенты подключаются и добавляют данные или удаляют данные с помощью вызовов RPC. Это дает вам максимальную гибкость с семантикой. Вы можете быть «транзакционными», так что если клиент берет данные и затем никогда не говорит «эй, я с ними покончил», вы можете предположить, что клиент умер, и передать работу другому клиенту. Вы также можете убедиться, что каждое задание выполняется только один раз.
В любом случае, работа с очередью с таблицей реляционной базы данных требует немного усилий. Вы должны использовать что-то KiokuDB для настойчивости. (Вы можете физически хранить данные в MySQL, если хотите, но это обеспечивает более приятный Perl API для этого.)