Sie müssen Ihre Bestellung umdrehen, damit es kein Zeitfenster gibt.
Verbraucher-POP (jeder Verbraucher hat eine eindeutige $consumer_id)
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;
Lieferant PUSH
insert into queue
(id, last_pop, ...)
values
(NULL, NULL, ...);
Die Warteschlange wird zeitlich nach der ID-Spalte geordnet und beim POP by der Consumer_id zugewiesen.