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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.