sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la mejor manera de implementar una tabla de cola de mensajería en mysql?

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];