My implementation of queuing grew out of a need to reduce the wait time for long reports, and the result was much like this.
In addition to the queue table in the article (which is very good, Alexander), I needed a table with report parameters.
I also needed an interface that would remove items from the queue, in case a report failed.
I hope you package up the code so people can try it out themselves. I find it very useful!