Devi invertire i tuoi ordini in modo che non ci sia una finestra temporale.
Consumer POP (ogni consumatore ha un $consumer_id univoco)
Update queue
set last_pop = '$consumer_id'
where last_pop is null
order by id limit 1;
$job =
Select * from queue
where last_pop = '$consumer_id'
order by id desc
limit 1;
FORNITORE PUSH
insert into queue
(id, last_pop, ...)
values
(NULL, NULL, ...);
La coda è ordinata nel tempo in base alla colonna id e assegnata su POP da al consumer_id.