Su dequeue podría ser más conciso. En lugar de depender de la reversión de la transacción, podría hacerlo en una declaración atómica sin una transacción explícita:
UPDATE jobs SET process_id = ? WHERE process_id IS NULL ORDER BY ID ASC LIMIT 1;
Luego puede obtener trabajos con (los corchetes [] significan opcionales, según sus detalles):
SELECT * FROM jobs WHERE process_id = ? [ORDER BY ID LIMIT 1];