mentioned above, MySQL may not be ideal because of its locking mechanism. However, a slightly different architecture (used by many queueing systems) could work well for you (with MySQL).
- process(es) that insert into the queue - generators
- quque manager process
- process(es) that remove from the queue - consumers
With a single queue manager that is responsible for assigning queue ID's to new queue entries, and giving queue entries to the consumer processes you avoid the MySQL lock problem. You could use MySQL (or even flat files) to backup the queue manager in case it failed or you have too much data to fit in ram at once, or the queue manger could just direct and queue the data directly between processes.