I've implemented a queuing infrastructure using IPC::DirQueue
in reply to decoupling processes via queues: advice wanted
Some of the other persistent queue implementations on CPAN don't allow multiple processes accessing queues. IPC::DirQueue can work with multiple processes and even multiple hosts via NFS.
Also the CPAN queue implementations I've looked at don't have the idea of a job on the queue being active, they only do push and shift. An active job stays on the queue until you say "I've finished with that job". Other processes don't pick up the job while active.
Great module. It may fit your needs if you don't want to dive into oracle queues.