POE::Queue::Array works stand-alone, so you could incorporate it into your existing program without using the rest of POE.
You would create and manage your own POE::Queue::Array instance, enqueuing new requests as they arrive and dequeueing them in priority order. Following the UNIX convention, lower priorities are more important, so you might assign all paid requests a priority of 1000. Free requests would be assigned 2000 and would fall into line after the paid ones.
POE's implementation ensures that items having the same priority are dequeued in first-in/first-out (FIFO) order. All the tasks within a service class are dequeued in the order they were enqueued.
As jdporter pointed out, using a strictly priority-based queue will allow paid requests to starve out free ones.
If you later need parallel processing and have the time, you can adopt the rest of POE and translate your (I assume) declarative program into something that works with events and callbacks. In the meantime, you don't have to do all that to take advantage of priority queues.
Other priority queue modules to consider:In reply to Re: Handling Multi-Priority Requests
by rcaputo
in thread Handling Multi-Priority Requests
by Wibble
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |