Это звучит не слишком сложно; просто включите метку времени, по которой вы можете сортировать каждый раз, когда вводятся задания. В зависимости от базы данных это поле может быть заполнено текущей отметкой времени.
При получении заданий это так же просто, как поместить операторы SELECT и DELETE в транзакцию. Если вы чувствуете, что это неудобно, что-то вроде этого может сделать это:
UPDATE tblQueue SET mark = <unique application id> WHERE mark IS NULL ORDER BY timestamp ASC LIMIT 1
SELECT * FROM tblQueue WHERE mark = <unique app id>
DELETE FROM tblQueue WHERE mark = <unique app id>
Используя эту настройку, вы можете избежать транзакций, если они вас пугают.
Ваше определение партии несколько неясно; если вы просто имеете в виду, что я могу обрабатывать 10 элементов одновременно, просто измените предложение LIMIT 1 первого запроса на LIMIT 10.
Если вы имеете в виду, что задания могут быть сгруппированы, вам, вероятно, понадобится очередь заданий и поместить подэлементы в другую таблицу (это не очередь, а обычная таблица с внешним ключом, указывающим на элемент задания).